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

Docker image fails to start if celery config section is not defined #29537

Closed
1 of 2 tasks
Limess opened this issue Feb 14, 2023 · 1 comment · Fixed by #29541
Closed
1 of 2 tasks

Docker image fails to start if celery config section is not defined #29537

Limess opened this issue Feb 14, 2023 · 1 comment · Fixed by #29541
Labels
area:core kind:bug This is a clearly a bug

Comments

@Limess
Copy link

Limess commented Feb 14, 2023

Apache Airflow version

Other Airflow 2 version (please specify below)

What happened

Using Airflow 2.3.4

We removed any config values we did not explicitly set from airflow.cfg. This was to make future upgrades less involved, as we could only compare configuration values we explicitly set, rather than all permutations of versions. This has been recommended in slack as an approach.

e.g. we set AIRFLOW__CELERY__BROKER_URL as an environment variable - we do not set this in airflow.cfg, so we removed the [celery] section from the Airflow configuration.

We set AIRFLOW__CORE__EXECUTOR=CeleryExecutor, so we are using the Celery executor.

Upon starting the Airflow scheduler, it exited with code 1, and this message:

The section [celery] is not found in config.

Upon adding back in an empty

[celery]

section to airflow.cfg, this error went away. I have verified that it still picks up AIRFLOW__CELERY__BROKER_URL correctly.

What you think should happen instead

I'd expect Airflow to take defaults as listed here, I wouldn't expect the presence of configuration sections to cause errors.

How to reproduce

  1. Setup a docker image for the Airflow scheduler with apache/airflow:slim-2.3.4)-python3.10 and the following configuration in airflow.cfg - with no [celery] section:

    [core]
    # The executor class that airflow should use. Choices include
    # ``SequentialExecutor``, ``LocalExecutor``, ``CeleryExecutor``, ``DaskExecutor``,
    # ``KubernetesExecutor``, ``CeleryKubernetesExecutor`` or the
    # full import path to the class when using a custom executor.
    executor = CeleryExecutor
    
    [logging]
    [metrics]
    [secrets]
    [cli]
    [debug]
    [api]
    [lineage]
    [atlas]
    [operators]
    [hive]
    [webserver]
    [email]
    [smtp]
    [sentry]
    [celery_kubernetes_executor]
    [celery_broker_transport_options]
    [dask]
    [scheduler]
    [triggerer]
    [kerberos]
    [github_enterprise]
    [elasticsearch]
    [elasticsearch_configs]
    [kubernetes]
    [smart_sensor]
    
  2. Run the scheduler command, also setting AIRFLOW__CELERY__BROKER_URL to point to a Celery redis broker.

  3. Observe that the scheduler exits.

Operating System

Ubuntu 20.04.5 LTS (Focal Fossa)

Versions of Apache Airflow Providers

No response

Deployment

Other Docker-based deployment

Deployment details

AWS ECS

Docker apache/airflow:slim-2.3.4)-python3.10

Separate:

  • Webserver
  • Triggerer
  • Scheduler
  • Celery worker
  • Celery flower
    services

Anything else

This seems to occur due to this get-value check in the Airflow image entrypoint:

function wait_for_celery_broker() {
# Verifies connection to Celery Broker
local executor
executor="$(airflow config get-value core executor)"
if [[ "${executor}" == "CeleryExecutor" ]]; then
local connection_url
connection_url="$(airflow config get-value celery broker_url)"
wait_for_connection "${connection_url}"
fi
}

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

@Limess Limess added area:core kind:bug This is a clearly a bug labels Feb 14, 2023
@potiuk
Copy link
Member

potiuk commented Feb 14, 2023

Ah. So this is in the IMAGE not in Airlfow. That explains it.

potiuk added a commit to potiuk/airflow that referenced this issue Feb 14, 2023
The section check is not really needed and harmful. There should
be no problems if sections are missing from the configuration file.

Running this check might lead to a problem that if someone stripds down
the config file to bare minimum and moves the crucial configuration to
env variables the 'get-value' command might fail, even if the
configuration is perfectly sound for Airflow.

Fixes: apache#29537
potiuk added a commit that referenced this issue Feb 15, 2023
* Remove section check from get-value command

The section check is not really needed and harmful. There should
be no problems if sections are missing from the configuration file.

Running this check might lead to a problem that if someone stripds down
the config file to bare minimum and moves the crucial configuration to
env variables the 'get-value' command might fail, even if the
configuration is perfectly sound for Airflow.

Fixes: #29537

* Update airflow/cli/commands/config_command.py
pierrejeambrun pushed a commit that referenced this issue Mar 7, 2023
* Remove section check from get-value command

The section check is not really needed and harmful. There should
be no problems if sections are missing from the configuration file.

Running this check might lead to a problem that if someone stripds down
the config file to bare minimum and moves the crucial configuration to
env variables the 'get-value' command might fail, even if the
configuration is perfectly sound for Airflow.

Fixes: #29537

* Update airflow/cli/commands/config_command.py

(cherry picked from commit 06d45f0)
pierrejeambrun pushed a commit that referenced this issue Mar 8, 2023
* Remove section check from get-value command

The section check is not really needed and harmful. There should
be no problems if sections are missing from the configuration file.

Running this check might lead to a problem that if someone stripds down
the config file to bare minimum and moves the crucial configuration to
env variables the 'get-value' command might fail, even if the
configuration is perfectly sound for Airflow.

Fixes: #29537

* Update airflow/cli/commands/config_command.py

(cherry picked from commit 06d45f0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:core kind:bug This is a clearly a bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants