From 4e2d1c1a6205935a8c3d1dfa48a153d5433b314f Mon Sep 17 00:00:00 2001 From: serenajiang Date: Mon, 9 Sep 2019 09:09:15 -0700 Subject: [PATCH] more detailed async error messages (#8164) --- superset/db_engine_specs/base.py | 4 ++++ superset/db_engine_specs/hive.py | 2 +- superset/db_engine_specs/mysql.py | 2 +- superset/db_engine_specs/presto.py | 2 +- superset/utils/core.py | 4 ++-- tests/db_engine_specs_test.py | 6 +++--- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index 7df093fdb..d89f07a02 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -473,6 +473,10 @@ class BaseEngineSpec: @classmethod def extract_error_message(cls, e: Exception) -> str: + return f"{cls.engine} error: {cls._extract_error_message(e)}" + + @classmethod + def _extract_error_message(cls, e: Exception) -> str: """Extract error message for queries""" return utils.error_msg_from_exception(e) diff --git a/superset/db_engine_specs/hive.py b/superset/db_engine_specs/hive.py index 5c07e5a13..0b765a9b4 100644 --- a/superset/db_engine_specs/hive.py +++ b/superset/db_engine_specs/hive.py @@ -195,7 +195,7 @@ class HiveEngineSpec(PrestoEngineSpec): return uri @classmethod - def extract_error_message(cls, e): + def _extract_error_message(cls, e): msg = str(e) match = re.search(r'errorMessage="(.*?)(? str: diff --git a/tests/db_engine_specs_test.py b/tests/db_engine_specs_test.py index 2824205de..a6db8a150 100644 --- a/tests/db_engine_specs_test.py +++ b/tests/db_engine_specs_test.py @@ -137,7 +137,7 @@ class DbEngineSpecsTestCase(SupersetTestCase): ) self.assertEquals( ( - "Error while compiling statement: FAILED: " + "hive error: Error while compiling statement: FAILED: " "SemanticException [Error 10001]: Line 4:5 " "Table not found 'fact_ridesfdslakj'" ), @@ -145,7 +145,7 @@ class DbEngineSpecsTestCase(SupersetTestCase): ) e = Exception("Some string that doesn't match the regex") - self.assertEquals(str(e), HiveEngineSpec.extract_error_message(e)) + self.assertEquals(f"hive error: {e}", HiveEngineSpec.extract_error_message(e)) msg = ( "errorCode=10001, " @@ -153,7 +153,7 @@ class DbEngineSpecsTestCase(SupersetTestCase): '=None)"' ) self.assertEquals( - ("Error while compiling statement"), + ("hive error: Error while compiling statement"), HiveEngineSpec.extract_error_message(Exception(msg)), )