apache/superset · error · ReportScheduleScreenshotFailedError
Screenshot failed; aborting to avoid sending a partial repor
Error message
Screenshot failed; aborting to avoid sending a partial report
What it means
ReportScheduleScreenshotFailedError('Screenshot failed; aborting to avoid sending a partial report'): in _get_screenshots each screenshot.playwright capture returns via get_screenshot; a None result (playwright wrapper signaling failure without an exception) triggers this raise so a multi-URL report does not email some panels and silently omit others.
Source
Thrown at superset/commands/report/execute.py:787
screenshots = [
DashboardScreenshot(
url,
self._report_schedule.dashboard.digest,
window_size=window_size,
thumb_size=app.config["WEBDRIVER_WINDOW"]["dashboard"],
)
for url in urls
]
try:
imges = []
for screenshot in screenshots:
imge = screenshot.get_screenshot(
user=user,
log_context=self._log_context,
report_execution_context=self._report_execution_context,
)
if imge is None:
raise ReportScheduleScreenshotFailedError(
"Screenshot failed; aborting to avoid sending a partial report"
)
imges.append(imge)
elapsed_seconds: float = (
datetime.now(timezone.utc).replace(tzinfo=None) - start_time
).total_seconds()
logger.info(
"report_capture_complete %s elapsed_seconds=%.2f "
"remaining_seconds=%s screenshot_count=%s",
self._log_context,
elapsed_seconds,
(
f"{self._report_execution_context.deadline.remaining_seconds:.2f}"
if self._report_execution_context
else None
),
len(imges),
)View on GitHub (pinned to f4587218dd)
Solutions
- Re-run the schedule — transient playwright failures usually succeed on retry
- Check worker logs for playwright errors near the failure; raise SCREENSHOT_* timeouts or worker memory if pages crash
- Reduce tab count or dashboard weight (fewer/faster charts) if the failure is consistent on one specific tab
Defensive patterns
Strategy: retry
Try / catch
try:
screenshots = _get_screenshots()
except ReportScheduleScreenshotFailedError as ex:
if 'partial report' in str(ex):
retry_with_backoff(_get_screenshots, attempts=2) # transient playwright flake
else:
raise Prevention
- Keep playwright/browser versions pinned and matched to the wrapper
- Size worker memory for the heaviest dashboard render
- Alert on 'partial report' failures per schedule so owners learn their tab fails
When it happens
Trigger: Tabbed dashboard reports where one tab's screenshot.get_screenshot returns None (playwright page crash, navigation failure, target element missing); rate-limited or memory-starved playwright worker returning None instead of raising.
Common situations: Heavy dashboards under worker memory pressure; flaky internal network between worker and the screenshot service; playwright/browser version mismatch after upgrades.
Related errors
- Failed taking a screenshot {str(ex)}
- The chart this report targets was deleted. Restore the chart
- The dashboard this report targets was deleted. Restore the d
- Report schedule {id} ({name!r}) has no resolvable target (ch
- A timeout occurred while taking a screenshot.
AI-assisted analysis of apache/superset@f4587218dd (2026-08-14).
Data as JSON: /api/errors/58b5c750c330f23c.
Report an issue: GitHub.