Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Send emails does not work -official documentation wrong? CHROME=>version incompatible ChromeDriver/Chrome FIREFOX=> 'geckodriver' executable needs to be in PATH #20843

Closed
3 tasks done
nigzak opened this issue Jul 25, 2022 · 3 comments · Fixed by #22517
Assignees
Labels
#bug Bug report

Comments

@nigzak
Copy link
Contributor

nigzak commented Jul 25, 2022

Sending emails does not work - does not mind if firefox or chrome is used

How to reproduce the bug

create custom dockerfile with adding firefox or chrome (same issue if you only add one of them) and config
having redis active and reachable from docker
start docker
init image, load example and add a job for sending a report every minute

superset fab create-admin --username admin --firstname Superset --lastname Admin --email admin@superset.com --password admin
superset db upgrade
superset load_examples
superset init

start celery

celery --app=superset.tasks.celery_app:app worker --pool=prefork -O fair -c 4

HINT: featureflag alert_reports is active
image

Expected results

email is sent

Actual results

error is shown in logfile, no email is sent

Official Documentation: https://superset.apache.org/docs/installation/alerts-reports/

HINT CHROME: the chromedriver version is using V88 (LATEST_RELEASE_88) and the chrome stable is using currently 103 => I already changed this and updated "LATEST_RELEASE_88" to "LATEST_RELEASE"
image
=> if I use it without "_88" the error with version incompatibility is not there anymore and it works

firefox

dockerfile

FROM apache/superset:2.0.0
USER superset:superset
COPY custom_sso_security_manager.py /app/pythonpath/custom_sso_security_manager.py
COPY superset_config.py /app/pythonpath/superset_config.py

USER root:root



RUN chown superset:superset /app/pythonpath/custom_sso_security_manager.py
RUN chown superset:superset /app/pythonpath/superset_config.py
RUN chmod +x /app/pythonpath/custom_sso_security_manager.py
RUN chmod +x /app/pythonpath/superset_config.py


RUN apt-get update && \
    apt-get install --no-install-recommends -y firefox-esr


ENV GECKODRIVER_VERSION=0.29.0
RUN wget -q https://github.com/mozilla/geckodriver/releases/download/v${GECKODRIVER_VERSION}/geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz && \
    tar -x geckodriver -zf geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz -O > /usr/bin/geckodriver && \
    chmod 777 /usr/bin/geckodriver && \
    rm geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz
RUN pip install --no-cache authlib gevent psycopg2 redis
USER superset:superset

error

logging was configured successfully
2022-07-25 09:25:43,392:INFO:superset.utils.logging_configurator:logging was configured successfully
2022-07-25 09:25:43,399:INFO:root:Configured event logger of type <class 'superset.utils.log.DBEventLogger'>

 -------------- celery@7db8236e4201 v5.2.2 (dawn-chorus)
--- ***** -----
-- ******* ---- Linux-5.10.16.3-microsoft-standard-WSL2-x86_64-with-glibc2.2.5 2022-07-25 09:25:45
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         __main__:0x7ff39e8a2040
- ** ---------- .> transport:   redis://redis:6379/5
- ** ---------- .> results:     redis://redis:6379/5
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


SQLite Database support for metadata databases will be removed             in a future version of Superset.
[2022-07-25 09:25:47,477: WARNING/ForkPoolWorker-4] SQLite Database support for metadata databases will be removed             in a future version of Superset.
Init selenium driver
[2022-07-25 09:25:47,565: INFO/ForkPoolWorker-4] Init selenium driver
A downstream exception occurred while generating a report: f7372ee4-3c4d-4b6a-8b78-930926d4ba4f
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: 'geckodriver' executable needs to be in PATH.

[2022-07-25 09:25:47,881: ERROR/ForkPoolWorker-4] A downstream exception occurred while generating a report: f7372ee4-3c4d-4b6a-8b78-930926d4ba4f
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: 'geckodriver' executable needs to be in PATH.

chrome LATEST_RELEASE_88 (from docu page, unchanged)

dockerfile

FROM apache/superset:2.0.0
USER superset:superset
COPY custom_sso_security_manager.py /app/pythonpath/custom_sso_security_manager.py
COPY superset_config.py /app/pythonpath/superset_config.py
USER root:root
RUN chown superset:superset /app/pythonpath/custom_sso_security_manager.py
RUN chown superset:superset /app/pythonpath/superset_config.py
RUN chmod +x /app/pythonpath/custom_sso_security_manager.py
RUN chmod +x /app/pythonpath/superset_config.py
RUN apt-get update && \
    wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
    apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb && \
    rm -f google-chrome-stable_current_amd64.deb

RUN export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE_88) && \
    wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip && \
    unzip chromedriver_linux64.zip -d /usr/bin && \
    chmod 755 /usr/bin/chromedriver && \
    rm -f chromedriver_linux64.zip
RUN pip install --no-cache authlib gevent psycopg2 redis
USER superset:superset

error

Init selenium driver
[2022-07-25 09:54:00,174: INFO/ForkPoolWorker-4] Init selenium driver
A downstream exception occurred while generating a report: 1d59d5b2-f620-480b-9a89-a6a15ef9917b
Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

[2022-07-25 09:54:01,631: ERROR/ForkPoolWorker-4] A downstream exception occurred while generating a report: 1d59d5b2-f620-480b-9a89-a6a15ef9917b
Traceback (most recent call last):
  File "/app/superset/reports/commands/execute.py", line 234, in _get_screenshots
    image = screenshot.get_screenshot(user=user)
  File "/app/superset/utils/screenshots.py", line 74, in get_screenshot
    self.screenshot = driver.get_screenshot(self.url, self.element, user)
  File "/app/superset/utils/webdriver.py", line 109, in get_screenshot
    driver = self.auth(user)
  File "/app/superset/utils/webdriver.py", line 87, in auth
    driver = self.create()
  File "/app/superset/utils/webdriver.py", line 84, in create
    return driver_class(**kwargs)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/tasks/scheduler.py", line 79, in execute
    AsyncExecuteReportScheduleCommand(
  File "/app/superset/reports/commands/execute.py", line 659, in run
    raise ex
  File "/app/superset/reports/commands/execute.py", line 655, in run
    ReportScheduleStateMachine(
  File "/app/superset/reports/commands/execute.py", line 624, in run
    state_cls(
  File "/app/superset/reports/commands/execute.py", line 525, in next
    raise first_ex
  File "/app/superset/reports/commands/execute.py", line 503, in next
    self.send()
  File "/app/superset/reports/commands/execute.py", line 408, in send
    notification_content = self._get_notification_content()
  File "/app/superset/reports/commands/execute.py", line 334, in _get_notification_content
    screenshot_data = self._get_screenshots()
  File "/app/superset/reports/commands/execute.py", line 239, in _get_screenshots
    raise ReportScheduleScreenshotFailedError(
superset.reports.commands.exceptions.ReportScheduleScreenshotFailedError: Failed taking a screenshot Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

Environment

(please complete the following information):

  • browser type and version: Chrome latest
  • superset version: 2.0.0
  • any feature flags active: "ALERT_REPORTS": True

Checklist

Make sure to follow these steps before submitting your issue - thank you!

  • I have checked the superset logs for python stacktraces and included it here as text if there are any.
  • I have reproduced the issue with at least the latest released version of superset.
  • I have checked the issue tracker for the same issue and I haven't found one similar.

Additional context

superset_config firefox

from flask_appbuilder.security.manager import AUTH_OID,AUTH_REMOTE_USER,AUTH_DB, AUTH_LDAP, AUTH_OAUTH
from celery.schedules import crontab

import os

from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager


basedir = os.path.abspath(os.path.dirname(__file__))
SUPERSET_WORKERS = 1



# AUTHENTIFICATION STUFF ---------------------------------------------------------------------------
OIDCCID="REMOVED"
OIDCCS="REMOVED"
CSRF_ENABLED = True
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True



AUTH_ROLES_MAPPING = {
    "REMOVED": ["Admin"]
}
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 600
OAUTH_PROVIDERS = [
    {
       REMOVED
    }
]

ENABLE_PROXY_FIX = True
PREFERRED_URL_SCHEME = 'https'


# Console Log Settings
DATA_DIR = os.path.join(os.path.expanduser('~'), '.superset')
if not os.path.exists(DATA_DIR):
    os.makedirs(DATA_DIR) 
LOG_FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
LOG_LEVEL = 'DEBUG'
 
# ---------------------------------------------------
# Enable Time Rotate Log Handler
# ---------------------------------------------------
# LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICAL
 
ENABLE_TIME_ROTATE = False
TIME_ROTATE_LOG_LEVEL = 'DEBUG'
FILENAME = os.path.join(DATA_DIR, 'superset.log')
ROLLOVER = 'midnight'
INTERVAL = 1
BACKUP_COUNT = 30




## REDIS/CELERY/ALERTS ------------------------------------
from celery.schedules import crontab

FEATURE_FLAGS = {
    "ALERT_REPORTS": True
}

REDIS_HOST = "redis"
REDIS_PORT = "6379"

CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'redis',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 1,
    'CACHE_REDIS_URL': 'redis://redis:6379/1'
}
FILTER_STATE_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/2'
}

EXPLORE_FORM_DATA_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/3'
}


class CeleryConfig:
    broker_url = 'redis://redis:6379/5'
    imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
    result_backend = 'redis://redis:6379/5'
    worker_prefetch_multiplier = 10
    worker_log_level  = 'DEBUG'
    task_acks_late = True
    task_annotations = {
        'sql_lab.get_sql_results': {
            'rate_limit': '100/s',
        },
        'email_reports.send': {
            'rate_limit': '1/s',
            'time_limit': 120,
            'soft_time_limit': 150,
            'ignore_result': True,
        },
    }
    beat_schedule = {
        'reports.scheduler': {
            'task': 'reports.scheduler',
            'schedule': crontab(minute='*', hour='*'),
        },
    }
CELERY_CONFIG = CeleryConfig

SCREENSHOT_LOCATE_WAIT = 100
SCREENSHOT_LOAD_WAIT = 600


# Email configuration
SMTP_HOST = "REMOVED"
SMTP_STARTTLS = True
SMTP_SSL = True
SMTP_USER = "REMOVED"
SMTP_PORT = 25
SMTP_PASSWORD = "REMOVED"
SMTP_MAIL_FROM = "REMOVED"

## https://superset.apache.org/docs/installation/alerts-reports/ webdriver cfg

# This is for internal use, you can keep http
WEBDRIVER_BASEURL="http://superset:8088"
# This is the link sent to the recipient, change to your domain eg. https://superset.mydomain.com
WEBDRIVER_BASEURL_USER_FRIENDLY="https://superset.localhost/"

superset_config chrome

from flask_appbuilder.security.manager import AUTH_OID,AUTH_REMOTE_USER,AUTH_DB, AUTH_LDAP, AUTH_OAUTH
from celery.schedules import crontab

import os

from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager


basedir = os.path.abspath(os.path.dirname(__file__))
SUPERSET_WORKERS = 1



# AUTHENTIFICATION STUFF ---------------------------------------------------------------------------
OIDCCID="REMOVED"
OIDCCS="REMOVED"
CSRF_ENABLED = True
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True



AUTH_ROLES_MAPPING = {
    "REMOVED": ["Admin"]
}
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 600
OAUTH_PROVIDERS = [
    {
       REMOVED
    }
]

ENABLE_PROXY_FIX = True
PREFERRED_URL_SCHEME = 'https'


# Console Log Settings
DATA_DIR = os.path.join(os.path.expanduser('~'), '.superset')
if not os.path.exists(DATA_DIR):
    os.makedirs(DATA_DIR) 
LOG_FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
LOG_LEVEL = 'DEBUG'
 
# ---------------------------------------------------
# Enable Time Rotate Log Handler
# ---------------------------------------------------
# LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICAL
 
ENABLE_TIME_ROTATE = False
TIME_ROTATE_LOG_LEVEL = 'DEBUG'
FILENAME = os.path.join(DATA_DIR, 'superset.log')
ROLLOVER = 'midnight'
INTERVAL = 1
BACKUP_COUNT = 30




## REDIS/CELERY/ALERTS ------------------------------------
from celery.schedules import crontab

FEATURE_FLAGS = {
    "ALERT_REPORTS": True
}

REDIS_HOST = "redis"
REDIS_PORT = "6379"

CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'redis',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 1,
    'CACHE_REDIS_URL': 'redis://redis:6379/1'
}
FILTER_STATE_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/2'
}

EXPLORE_FORM_DATA_CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_filter_',
    'CACHE_REDIS_URL': 'redis://redis:6379/3'
}


class CeleryConfig:
    broker_url = 'redis://redis:6379/5'
    imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
    result_backend = 'redis://redis:6379/5'
    worker_prefetch_multiplier = 10
    worker_log_level  = 'DEBUG'
    task_acks_late = True
    task_annotations = {
        'sql_lab.get_sql_results': {
            'rate_limit': '100/s',
        },
        'email_reports.send': {
            'rate_limit': '1/s',
            'time_limit': 120,
            'soft_time_limit': 150,
            'ignore_result': True,
        },
    }
    beat_schedule = {
        'reports.scheduler': {
            'task': 'reports.scheduler',
            'schedule': crontab(minute='*', hour='*'),
        },
    }
CELERY_CONFIG = CeleryConfig

SCREENSHOT_LOCATE_WAIT = 100
SCREENSHOT_LOAD_WAIT = 600


# Email configuration
SMTP_HOST = "REMOVED"
SMTP_STARTTLS = True
SMTP_SSL = True
SMTP_USER = "REMOVED"
SMTP_PORT = 25
SMTP_PASSWORD = "REMOVED"
SMTP_MAIL_FROM = "REMOVED"

## https://superset.apache.org/docs/installation/alerts-reports/ webdriver cfg
# WebDriver configuration
# If you use Firefox, you can stick with default values
# If you use Chrome, then add the following WEBDRIVER_TYPE and WEBDRIVER_OPTION_ARGS
WEBDRIVER_TYPE = "chrome"
WEBDRIVER_OPTION_ARGS = [
    "--force-device-scale-factor=2.0",
    "--high-dpi-support=2.0",
    "--headless",
    "--disable-gpu",
    "--disable-dev-shm-usage",
    "--no-sandbox",
    "--disable-setuid-sandbox",
    "--disable-extensions",
]

# This is for internal use, you can keep http
WEBDRIVER_BASEURL="http://superset:8088"
# This is the link sent to the recipient, change to your domain eg. https://superset.mydomain.com
WEBDRIVER_BASEURL_USER_FRIENDLY="https://superset.localhost/"
@nigzak nigzak added the #bug Bug report label Jul 25, 2022
@nigzak nigzak changed the title sending emails from superset does not work with chrome or firefox - errors in logfiles for both possibilities TICKET IN BUILDING PHASE ... sending emails from superset does not work with chrome or firefox - errors in logfiles for both possibilities Jul 25, 2022
@nigzak nigzak changed the title TICKET IN BUILDING PHASE ... sending emails from superset does not work with chrome or firefox - errors in logfiles for both possibilities Send emails does not work: CHROME=>official documentation wrong? FIREFOX=> 'geckodriver' executable needs to be in PATH Jul 25, 2022
@nigzak nigzak changed the title Send emails does not work: CHROME=>official documentation wrong? FIREFOX=> 'geckodriver' executable needs to be in PATH Send emails does not work -official documentation wrong? CHROME=>version incompatible ChromeDriver/Chrome FIREFOX=> 'geckodriver' executable needs to be in PATH Jul 25, 2022
@rusackas
Copy link
Member

rusackas commented Dec 8, 2022

@nigzak thanks for all the effort you put into filing this issue, and sorry it slipped through the cracks for so long. A lot of updates have been made in this area. Can you confirm whether or not this is still an issue? If it is, we'll do our best to repro/triage accordingly (CC @yousoph - happy to help track this with you as needed)

@nigzak
Copy link
Contributor Author

nigzak commented Dec 22, 2022

Hi @rusackas

I have added both driver in my container (still like this :)) and I am using currently CHROME variant.
I have shortly checked the official documentation again on page - and its still buggy. This should be at least fixed; if you use it like this it will not work

Official Documentation => https://superset.apache.org/docs/installation/alerts-reports/
image

This walk-through is not working because the versions are not matching and the use will fail.

Minimum suggested fix: remove "_88" to use latest version of chromedriver.
With this you install the latest chrome with the _88 chromdriver - they are not compatible
/// from up

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 103.0.5060.134 with binary path /usr/bin/google-chrome

exact code lines where are not matching on docu page:

https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
// downloads latest chrome (currently seems to be in linux at the moment V 108.0.5359.124)
...
export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE_88) && \
    wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip
// downloads CHROMEDRIVER V88

==> V88 and V108 are not compatible

///// possible fix for this on docu page (without the _88) => also uses the latest (=compatible) chromedriver 108.0.5359.71
export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE) && \
    wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip

With this fix currently chromedriver version works.
If Gecko works I currently don't know sorry ... I am happy that I found at least one working config :)

@rusackas
Copy link
Member

Just opened a teensy PR with your suggestion. If that merges, it should close this issue. Thanks for the report and the update!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
#bug Bug report
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants