{"record":{"id":"5f1cfe519f93fa4b","repo":"apache/superset","slug":"report-schedule-executor-user-username-s-was-not","errorCode":null,"errorMessage":"Report Schedule executor user %(username)s was not found.","messagePattern":"Report Schedule executor user (.+?) was not found\\.","errorType":"exception","errorClass":"ReportScheduleExecutorNotFoundError","httpStatus":500,"severity":"error","filePath":"superset/commands/report/alert.py","lineNumber":235,"sourceCode":"\n            if app.config[\"MUTATE_ALERT_QUERY\"]:\n                limited_rendered_sql = (\n                    self._report_schedule.database.mutate_sql_based_on_config(\n                        limited_rendered_sql\n                    )\n                )\n\n            executor, username = get_executor(  # pylint: disable=unused-variable\n                executors=app.config[\"ALERT_REPORTS_EXECUTORS\"],\n                model=self._report_schedule,\n            )\n            user = security_manager.find_user(username)\n            # A deleted/disabled executor user makes find_user return None. Raise\n            # the dedicated error so the handler below re-surfaces it instead of\n            # masking it as an opaque AlertQueryError (or letting the missing user\n            # surface as a NoneType error from the downstream auth flow).\n            if user is None:\n                raise ReportScheduleExecutorNotFoundError(username)\n\n            with override_user(user):\n                # Run table-level authorization as the executing user against\n                # the rendered SQL.\n                try:\n                    security_manager.raise_for_access(\n                        database=self._report_schedule.database,\n                        sql=rendered_sql,\n                        force_dataset_match=True,\n                    )\n                except SupersetSecurityException as ex:\n                    raise AlertQueryError(\n                        message=_(\"Alert query failed the authorization check\")\n                    ) from ex\n                start = default_timer()\n                df = self._report_schedule.database.get_df(sql=limited_rendered_sql)\n                stop = default_timer()\n                logger.info(","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/apache/superset/blob/f4587218dd19d046c3e4d00063e7d27f8a2ed354/superset/commands/report/alert.py#L217-L253","documentation":"Error \"Report Schedule executor user %(username)s was not found.\" thrown in apache/superset.","triggerScenarios":"The user configured to execute the report schedule no longer exists.","commonSituations":"Executing an alert/report schedule whose configured creator username no longer exists in the user table.","solutions":["Set the report schedule's working/executor user to an existing account.","Recreate the missing user or pick another owner for the schedule."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4587218dd19d046c3e4d00063e7d27f8a2ed354","analyzedAt":"2026-08-14T22:39:27.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}