Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: add stack trace to all calls of logger.error #14382

Merged
merged 1 commit into from
Apr 30, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -421,7 +421,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 @@ -494,7 +497,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 @@ -548,7 +554,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 @@ -837,7 +837,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 @@ -1219,7 +1219,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 @@ -528,6 +528,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