Bug description
Upgrading Superset (via Helm chart) from app (image tag) v4.0.2
to v5.0.0
has resulted in broken Reports failing to run.
After checking the upgrade documentation and making the required adjustments, whenever I run a Report, the Worker node logs shows that fails to connect to Superset despite setting the required config parameters:
FEATURE_FLAGS = {
"ENABLE_TEMPLATE_PROCESSING": True,
"ALERT_REPORTS": True,
"DRILL_TO_DETAIL": True,
"THUMBNAILS": True,
"ENABLE_DASHBOARD_SCREENSHOT_ENDPOINTS": True
}
WEBDRIVER_BASEURL = "http://superset.superset.svc.cluster.local:8088/"
WEBDRIVER_BASEURL_USER_FRIENDLY = "https://superset.domain.com/"
WEBDRIVER_TYPE = "firefox"
WEBDRIVER_OPTION_ARGS = [
"--headless",
"--no-sandbox",
"--disable-dev-shm-usage",
"--disable-gpu",
"--width=1280",
"--height=1024"
]
THUMBNAILS_EXECUTORS = ["admin"]
ALERT_REPORTS_EXECUTORS = ["admin"]
The worker node starts fine: Loaded your LOCAL configuration at [/app/pythonpath/superset_config.py]
I went into the container and can confirm the settings are there and correct.
Screenshots/recordings
The error log for the report:
[2025-08-21 14:42:02,774: ERROR/ForkPoolWorker-3] A downstream exception occurred while generating a report: 50d97828-404f-4d16-b693-8f28dbfc90ec. Failed taking a screenshot Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//0.0.0.0%3A8080/login/&c=UTF-8&d=Firefox%20can%E2%80%99t%20establish%20a%20connection%20to%20the%20server%20at%200.0.0.0%3A8080.
http://0.0.0.0:8080 is the default WEBDRIVER_BASEURL
in /app/superset/config.py
Additional configs
celery config
I was forced to set SQLALCHEMY_DATABASE_URI
which prevented the worker from starting up in v5.0.0 for some reason.
import os
import sys
from celery.schedules import crontab
if "celery" in sys.argv[0]:
from superset.app import create_app
db_user = os.getenv("DB_USER")
db_pass = os.getenv("DB_PASS")
db_host = os.getenv("DB_HOST")
db_port = os.getenv("DB_PORT")
db_name = os.getenv("DB_NAME")
SQLALCHEMY_DATABASE_URI = f"postgresql://{db_user}:{db_pass}@{db_host}:{db_port}/{db_name}"
app = create_app()
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.app_context().push()
class CeleryConfig(object):
broker_url = os.getenv("CELERY_BROKER_URL")
result_backend = os.getenv("CELERY_RESULT_BACKEND_URL")
imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
task_annotations = {
'sql_lab.get_sql_results': { 'rate_limit': '100/s', },
'email_reports.send': { 'rate_limit': '1/s', 'time_limit': 600, 'soft_time_limit': 600, 'ignore_result': True, },
}
beat_schedule = {
'reports.scheduler': { 'task': 'reports.scheduler', 'schedule': crontab(minute='*', hour='*'), },
'reports.prune_log': { 'task': 'reports.prune_log', 'schedule': crontab(minute=0, hour=0), },
}
CELERY_CONFIG = CeleryConfig
Am I missing something with how to correctly configure background celery process for Reports ? Thanks
Superset version
5.0.0
Checklist
- [x] I have searched Superset docs and Slack and didn't find a solution to my problem.
- [x] I have searched the GitHub issue tracker and didn't find a similar bug report.
- [x] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.
Comment From: dosubot[bot]
Hi @bluemalkin! I'm Dosu and I’m helping the superset team.
Superset’s config loading for Celery workers hasn’t changed between v4.0.2 and v5.0.0—the worker should load your custom superset_config.py if it’s mounted and referenced correctly, and the log message confirms it’s being loaded. If the worker is still using the default WEBDRIVER_BASEURL (http://0.0.0.0:8080), this usually points to a container/Helm setup issue, not a Superset bug. Double-check that your superset_config.py is mounted in every pod (web, worker, beat) and that environment variables like SUPERSET_CONFIG_PATH and PYTHONPATH are set so the config is found on startup. If you’re using Helm, make sure your values.yaml mounts the config in all relevant containers and sets the env vars for all Superset processes source.
For screenshot failures, Superset 5.0.0 works best with WEBDRIVER_TYPE set to "chromium" or "chrome" (not "firefox"), and option args like --headless
, --disable-gpu
, --disable-dev-shm-usage
, --no-sandbox
, and --disable-setuid-sandbox
. You may also want to use the WEBDRIVER_CONFIGURATION dictionary to specify the executable path and options for your WebDriver, which helps avoid DNS and connection errors in containerized environments source. If page loads are slow, increase SCREENSHOT_LOCATE_WAIT and SCREENSHOT_LOAD_WAIT to 30 and 60 seconds source.
If you’re still seeing issues, check that your container image includes the necessary browser and driver binaries, and that all pods have access to the same config and binaries. Let me know if you want example config snippets or troubleshooting steps for Helm!
To reply, just mention @dosu.
How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other
Comment From: msyavuz
Seems similar to https://github.com/apache/superset/issues/34774