Skip to content

Commit

Permalink
fix: correct exception level in log and add error message (#22381)
Browse files Browse the repository at this point in the history
  • Loading branch information
eschutho committed Dec 12, 2022
1 parent 605cfa0 commit c3a6327
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
7 changes: 5 additions & 2 deletions superset/tasks/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def scheduler() -> None:
active_schedule.id,
schedule,
),
**async_options
**async_options,
)


Expand Down Expand Up @@ -97,7 +97,10 @@ def execute(self: Celery.task, report_schedule_id: int, scheduled_dttm: str) ->
except CommandException as ex:
logger_func, level = get_logger_from_status(ex.status)
logger_func(
"A downstream %s occurred while generating a report: %s", level, task_id
"A downstream {} occurred while generating a report: {}. {}".format(
level, task_id, ex.message
),
exc_info=True,
)
if level == LoggerLevel.EXCEPTION:
self.update_state(state="FAILURE")
Expand Down
32 changes: 32 additions & 0 deletions tests/integration_tests/reports/scheduler_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,35 @@ def test_execute_task(update_state_mock, command_mock, init_mock, owners):

db.session.delete(report_schedule)
db.session.commit()


@pytest.mark.usefixtures("owners")
@patch("superset.reports.commands.execute.AsyncExecuteReportScheduleCommand.__init__")
@patch("superset.reports.commands.execute.AsyncExecuteReportScheduleCommand.run")
@patch("superset.tasks.scheduler.execute.update_state")
@patch("superset.utils.log.logger")
def test_execute_task_with_command_exception(
logger_mock, update_state_mock, command_mock, init_mock, owners
):
from superset.commands.exceptions import CommandException

with app.app_context():
report_schedule = insert_report_schedule(
type=ReportScheduleType.ALERT,
name=f"report-{randint(0,1000)}",
crontab="0 4 * * *",
timezone="America/New_York",
owners=owners,
)
init_mock.return_value = None
command_mock.side_effect = CommandException("Unexpected error")
with freeze_time("2020-01-01T09:00:00Z"):
execute(report_schedule.id, "2020-01-01T09:00:00Z")
update_state_mock.assert_called_with(state="FAILURE")
logger_mock.exception.assert_called_with(
"A downstream exception occurred while generating a report: None. Unexpected error",
exc_info=True,
)

db.session.delete(report_schedule)
db.session.commit()

0 comments on commit c3a6327

Please sign in to comment.