Skip to content

Commit

Permalink
chore: add stack trace to all calls of logger.error (#14382)
Browse files Browse the repository at this point in the history
  • Loading branch information
samtfm authored and hughhhh committed May 4, 2021
1 parent 1134f29 commit 93f66fd
Show file tree
Hide file tree
Showing 26 changed files with 133 additions and 48 deletions.
15 changes: 12 additions & 3 deletions superset/annotation_layers/annotations/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,10 @@ def post(self, pk: int) -> Response: # pylint: disable=arguments-differ
return self.response_422(message=ex.normalized_messages())
except AnnotationCreateFailedError as ex:
logger.error(
"Error creating annotation %s: %s", self.__class__.__name__, str(ex)
"Error creating annotation %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -384,7 +387,10 @@ def put( # pylint: disable=arguments-differ
return self.response_422(message=ex.normalized_messages())
except AnnotationUpdateFailedError as ex:
logger.error(
"Error updating annotation %s: %s", self.__class__.__name__, str(ex)
"Error updating annotation %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -436,7 +442,10 @@ def delete( # pylint: disable=arguments-differ
return self.response_404()
except AnnotationDeleteFailedError as ex:
logger.error(
"Error deleting annotation %s: %s", self.__class__.__name__, str(ex)
"Error deleting annotation %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down
11 changes: 9 additions & 2 deletions superset/annotation_layers/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ def delete(self, pk: int) -> Response:
"Error deleting annotation layer %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -220,7 +221,10 @@ def post(self) -> Response:
return self.response_422(message=ex.normalized_messages())
except AnnotationLayerCreateFailedError as ex:
logger.error(
"Error creating annotation %s: %s", self.__class__.__name__, str(ex)
"Error creating annotation %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -290,7 +294,10 @@ def put(self, pk: int) -> Response:
return self.response_422(message=ex.normalized_messages())
except AnnotationLayerUpdateFailedError as ex:
logger.error(
"Error updating annotation %s: %s", self.__class__.__name__, str(ex)
"Error updating annotation %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down
2 changes: 1 addition & 1 deletion superset/cachekeys/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ def invalidate(self) -> Response:
len(datasource_uids),
)
except SQLAlchemyError as ex: # pragma: no cover
logger.error(ex)
logger.error(ex, exc_info=True)
db.session.rollback()
return self.response_500(str(ex))
db.session.commit()
Expand Down
15 changes: 12 additions & 3 deletions superset/charts/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,10 @@ def post(self) -> Response:
return self.response_422(message=ex.normalized_messages())
except ChartCreateFailedError as ex:
logger.error(
"Error creating model %s: %s", self.__class__.__name__, str(ex)
"Error creating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -352,7 +355,10 @@ def put(self, pk: int) -> Response:
response = self.response_422(message=ex.normalized_messages())
except ChartUpdateFailedError as ex:
logger.error(
"Error updating model %s: %s", self.__class__.__name__, str(ex)
"Error updating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
response = self.response_422(message=str(ex))

Expand Down Expand Up @@ -407,7 +413,10 @@ def delete(self, pk: int) -> Response:
return self.response_403()
except ChartDeleteFailedError as ex:
logger.error(
"Error deleting model %s: %s", self.__class__.__name__, str(ex)
"Error deleting model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down
4 changes: 3 additions & 1 deletion superset/common/query_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,9 @@ def get_df_payload( # pylint: disable=too-many-statements,too-many-locals
except KeyError as ex:
logger.exception(ex)
logger.error(
"Error reading cache: %s", error_msg_from_exception(ex)
"Error reading cache: %s",
error_msg_from_exception(ex),
exc_info=True,
)
logger.info("Serving from cache")

Expand Down
15 changes: 12 additions & 3 deletions superset/dashboards/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,10 @@ def post(self) -> Response:
return self.response_422(message=ex.normalized_messages())
except DashboardCreateFailedError as ex:
logger.error(
"Error creating model %s: %s", self.__class__.__name__, str(ex)
"Error creating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -532,7 +535,10 @@ def put(self, pk: int) -> Response:
return self.response_422(message=ex.normalized_messages())
except DashboardUpdateFailedError as ex:
logger.error(
"Error updating model %s: %s", self.__class__.__name__, str(ex)
"Error updating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
response = self.response_422(message=str(ex))
return response
Expand Down Expand Up @@ -586,7 +592,10 @@ def delete(self, pk: int) -> Response:
return self.response_403()
except DashboardDeleteFailedError as ex:
logger.error(
"Error deleting model %s: %s", self.__class__.__name__, str(ex)
"Error deleting model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down
17 changes: 13 additions & 4 deletions superset/databases/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,10 @@ def post(self) -> Response:
return self.response_422(message=str(ex))
except DatabaseCreateFailedError as ex:
logger.error(
"Error creating model %s: %s", self.__class__.__name__, str(ex)
"Error creating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -320,7 +323,10 @@ def put( # pylint: disable=too-many-return-statements, arguments-differ
return self.response_422(message=str(ex))
except DatabaseUpdateFailedError as ex:
logger.error(
"Error updating model %s: %s", self.__class__.__name__, str(ex)
"Error updating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -373,7 +379,10 @@ def delete(self, pk: int) -> Response: # pylint: disable=arguments-differ
return self.response_422(message=str(ex))
except DatabaseDeleteFailedError as ex:
logger.error(
"Error deleting model %s: %s", self.__class__.__name__, str(ex)
"Error deleting model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -800,7 +809,7 @@ def import_(self) -> Response:
logger.warning("Import database failed")
return self.response_422(message=exc.normalized_messages())
except DatabaseImportError as exc:
logger.error("Import database failed")
logger.error("Import database failed", exc_info=True)
return self.response_500(message=str(exc))

@expose("/<int:pk>/function_names/", methods=["GET"])
Expand Down
22 changes: 17 additions & 5 deletions superset/datasets/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,10 @@ def post(self) -> Response:
return self.response_422(message=ex.normalized_messages())
except DatasetCreateFailedError as ex:
logger.error(
"Error creating model %s: %s", self.__class__.__name__, str(ex)
"Error creating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -325,7 +328,10 @@ def put(self, pk: int) -> Response:
response = self.response_422(message=ex.normalized_messages())
except DatasetUpdateFailedError as ex:
logger.error(
"Error updating model %s: %s", self.__class__.__name__, str(ex)
"Error updating model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
response = self.response_422(message=str(ex))
return response
Expand Down Expand Up @@ -379,7 +385,10 @@ def delete(self, pk: int) -> Response:
return self.response_403()
except DatasetDeleteFailedError as ex:
logger.error(
"Error deleting model %s: %s", self.__class__.__name__, str(ex)
"Error deleting model %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -512,7 +521,10 @@ def refresh(self, pk: int) -> Response:
return self.response_403()
except DatasetRefreshFailedError as ex:
logger.error(
"Error refreshing dataset %s: %s", self.__class__.__name__, str(ex)
"Error refreshing dataset %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))

Expand Down Expand Up @@ -716,5 +728,5 @@ def import_(self) -> Response:
logger.warning("Import dataset failed")
return self.response_422(message=exc.normalized_messages())
except DatasetImportError as exc:
logger.error("Import dataset failed")
logger.error("Import dataset failed", exc_info=True)
return self.response_500(message=str(exc))
5 changes: 4 additions & 1 deletion superset/datasets/columns/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ def delete( # pylint: disable=arguments-differ
return self.response_403()
except DatasetColumnDeleteFailedError as ex:
logger.error(
"Error deleting dataset column %s: %s", self.__class__.__name__, str(ex)
"Error deleting dataset column %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))
3 changes: 2 additions & 1 deletion superset/datasets/commands/bulk_delete.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ def run(self) -> None:
else:
if not view_menu:
logger.error(
"Could not find the data access permission for the dataset"
"Could not find the data access permission for the dataset",
exc_info=True,
)
db.session.commit()

Expand Down
3 changes: 2 additions & 1 deletion superset/datasets/commands/delete.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ def run(self) -> Model:
else:
if not view_menu:
logger.error(
"Could not find the data access permission for the dataset"
"Could not find the data access permission for the dataset",
exc_info=True,
)
db.session.commit()
except (SQLAlchemyError, DAODeleteFailedError) as ex:
Expand Down
2 changes: 1 addition & 1 deletion superset/datasets/dao.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def get_database_by_id(database_id: int) -> Optional[Database]:
try:
return db.session.query(Database).filter_by(id=database_id).one_or_none()
except SQLAlchemyError as ex: # pragma: no cover
logger.error("Could not get database by id: %s", str(ex))
logger.error("Could not get database by id: %s", str(ex), exc_info=True)
return None

@staticmethod
Expand Down
5 changes: 4 additions & 1 deletion superset/datasets/metrics/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ def delete( # pylint: disable=arguments-differ
return self.response_403()
except DatasetMetricDeleteFailedError as ex:
logger.error(
"Error deleting dataset column %s: %s", self.__class__.__name__, str(ex)
"Error deleting dataset column %s: %s",
self.__class__.__name__,
str(ex),
exc_info=True,
)
return self.response_422(message=str(ex))
4 changes: 2 additions & 2 deletions superset/db_engine_specs/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@ def get_table_comment(
# It's expected that some dialects don't implement the comment method
pass
except Exception as ex: # pylint: disable=broad-except
logger.error("Unexpected error while fetching table comment")
logger.error("Unexpected error while fetching table comment", exc_info=True)
logger.exception(ex)
return comment

Expand Down Expand Up @@ -1218,7 +1218,7 @@ def get_extra_params(database: "Database") -> Dict[str, Any]:
try:
extra = json.loads(database.extra)
except json.JSONDecodeError as ex:
logger.error(ex)
logger.error(ex, exc_info=True)
raise ex
return extra

Expand Down
1 change: 1 addition & 0 deletions superset/db_engine_specs/hive.py
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,7 @@ def get_function_names(cls, database: "Database") -> List[str]:
"Expected column `%s`, found: %s.",
cls._show_functions_column,
", ".join(columns),
exc_info=True,
)
# if the results have a single column, use that
if len(columns) == 1:
Expand Down
6 changes: 4 additions & 2 deletions superset/models/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,9 @@ def function_names(self) -> List[str]:
# function_names property is used in bulk APIs and should not hard crash
# more info in: https://github.com/apache/superset/issues/9678
logger.error(
"Failed to fetch database function names with error: %s", str(ex)
"Failed to fetch database function names with error: %s",
str(ex),
exc_info=True,
)
return []

Expand Down Expand Up @@ -594,7 +596,7 @@ def get_encrypted_extra(self) -> Dict[str, Any]:
try:
encrypted_extra = json.loads(self.encrypted_extra)
except json.JSONDecodeError as ex:
logger.error(ex)
logger.error(ex, exc_info=True)
raise ex
return encrypted_extra

Expand Down
1 change: 1 addition & 0 deletions superset/models/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ def import_from_dict(
cls.__name__,
str(obj_query),
yaml.safe_dump(dict_rep),
exc_info=True,
)
raise ex

Expand Down
2 changes: 1 addition & 1 deletion superset/models/slice.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ def form_data(self) -> Dict[str, Any]:
try:
form_data = json.loads(self.params)
except Exception as ex: # pylint: disable=broad-except
logger.error("Malformed json in slice's params")
logger.error("Malformed json in slice's params", exc_info=True)
logger.exception(ex)
form_data.update(
{
Expand Down
Loading

0 comments on commit 93f66fd

Please sign in to comment.