Skip to content

Commit

Permalink
fix: don't use root logger on safe decorator (#1990)
Browse files Browse the repository at this point in the history
When the exception is logged it might cause another exception:

```
2023-01-31 11:09:00,239:ERROR:superset.views.base:_log() got an unexpected keyword argument 'exc_info'
Traceback (most recent call last):
  File "/opt/superset/lib/python3.9/site-packages/flask_appbuilder/api/__init__.py", line 109, in wraps
    return f(self, *args, **kwargs)
  File "/opt/superset/lib/python3.9/site-packages/superset/views/base_api.py", line 113, in wraps
    raise ex
  File "/opt/superset/lib/python3.9/site-packages/superset/views/base_api.py", line 110, in wraps
    duration, response = time_function(f, self, *args, **kwargs)
  File "/opt/superset/lib/python3.9/site-packages/superset/utils/core.py", line 1524, in time_function
    response = func(*args, **kwargs)
  File "/opt/superset/lib/python3.9/site-packages/superset/utils/log.py", line 245, in wrapper
    value = f(*args, **kwargs)
  File "/opt/superset/lib/python3.9/site-packages/superset/databases/api.py", line 601, in table_extra_metadata
    payload = database.db_engine_spec.extra_table_metadata(
  File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/presto.py", line 927, in extra_table_metadata
    Any, cls.get_create_view(database, schema_name, table_name)
  File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/presto.py", line 951, in get_create_view
    cls.execute(cursor, sql)
  File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/base.py", line 1261, in execute
    raise cls.get_dbapi_mapped_exception(ex)
  File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/base.py", line 1259, in execute
    cursor.execute(query)
  File "/opt/superset/lib/python3.9/site-packages/trino/dbapi.py", line 439, in execute
    result = self._query.execute()
  File "/opt/superset/lib/python3.9/site-packages/trino/client.py", line 765, in execute
    self._result.rows += self.fetch()
  File "/opt/superset/lib/python3.9/site-packages/trino/client.py", line 780, in fetch
    status = self._request.process(response)
  File "/opt/superset/lib/python3.9/site-packages/trino/client.py", line 581, in process
    raise self._process_error(response["error"], response.get("id"))
trino.exceptions.TrinoUserError: TrinoUserError(type=USER_ERROR, name=NOT_SUPPORTED, message="line 1:1: Relation 'asdf' is a table, not a view", query_id=20230131_110859_18306_tzku9)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/superset/lib/python3.9/site-packages/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/superset/lib/python3.9/site-packages/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/opt/superset/lib/python3.9/site-packages/flask_appbuilder/security/decorators.py", line 89, in wraps
    return f(self, *args, **kwargs)
  File "/opt/superset/lib/python3.9/site-packages/superset/databases/decorators.py", line 66, in wraps
    return f(self, database, table_name_parsed, schema_name_parsed)
  File "/opt/superset/lib/python3.9/site-packages/flask_appbuilder/api/__init__.py", line 115, in wraps
    logging.exception(e)
  File "/opt/Python-3.9.16/lib/python3.9/logging/__init__.py", line 2072, in exception
    error(msg, *args, exc_info=exc_info, **kwargs)
  File "/opt/Python-3.9.16/lib/python3.9/logging/__init__.py", line 2064, in error
    root.error(msg, *args, **kwargs)
  File "/opt/Python-3.9.16/lib/python3.9/logging/__init__.py", line 1475, in error
    self._log(ERROR, msg, args, **kwargs)
TypeError: _log() got an unexpected keyword argument 'exc_info'
```
  • Loading branch information
Khrol authored Feb 1, 2023
1 parent dcb32c7 commit 1e1c354
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion flask_appbuilder/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def wraps(self: "BaseApi", *args: Any, **kwargs: Any) -> Response:
except BadRequest as e:
return self.response_400(message=str(e))
except Exception as e:
logging.exception(e)
log.exception(e)
return self.response_500(message=get_error_msg())

return functools.update_wrapper(wraps, f)
Expand Down

0 comments on commit 1e1c354

Please sign in to comment.