You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
SDK conf does not resolve provider metadata config defaults (has_option returns False) #64201
airflow.sdk.configuration.conf does not resolve config options defined in provider metadata (provider.yaml). For example, conf.has_option("celery", "pool") returns False on the SDK conf, while the core conf correctly returns True.
This was discovered during the #60000 conf import migration. celery_command.py uses conf.has_option("celery", "pool") to decide whether to pass --pool to the Celery worker. After switching to the compat SDK conf, this returns False and the --pool prefork argument is silently dropped.
From reading the code, this may be caused by a circular dependency in the lookup sequence. When has_option() triggers _get_option_from_provider_metadata_config_fallbacks (parser.py:318), the cached property _provider_metadata_config_fallback_default_values (parser.py:342) calls ProvidersManagerTaskRuntime().provider_configs, which in turn calls conf.load_providers_configuration(). load_providers_configuration() uses already_initialized_provider_configs (parser.py:1202) which may return an empty dict if initialization hasn't completed yet.
What you think should happen instead?
sdk_conf.has_option("celery", "pool") should return True, consistent with core_conf.has_option("celery", "pool").
I just tested it out from my end, it seems both Core and SDK conf.has_option didn't work even after the PR merged.
It seems like regression when resolving the review comments ...
I will take a closer look now, assign myself just to track the progress, as it might impact the 3.2 release.
Hi @jason810496, Core conf works on my side, what command are you using for the test?
Here is mine: breeze --backend postgres run pytest providers/celery/tests/unit/celery/cli/test_celery_command.py::TestWorkerStart::test_worker_started_with_required_arguments
Core conf works on my side, what command are you using for the test?
Actually, I found that there's no problem for conf.get for both Core and TaskSDK, only has_option will not respect the provider metadata for both Core and TaskSDK.
Activity
Mishra-coder commentedon Mar 25, 2026
Hi! I’d like to work on this issue. Could you please assign it to me? I’ll make sure to follow the contribution guidelines. Thanks!
jason810496 commentedon Mar 25, 2026
I just tested it out from my end, it seems both Core and SDK
conf.has_optiondidn't work even after the PR merged.It seems like regression when resolving the review comments ...
I will take a closer look now, assign myself just to track the progress, as it might impact the 3.2 release.
aaron-y-chen commentedon Mar 25, 2026
Hi @jason810496, Core
confworks on my side, what command are you using for the test?Here is mine:
breeze --backend postgres run pytest providers/celery/tests/unit/celery/cli/test_celery_command.py::TestWorkerStart::test_worker_started_with_required_argumentsjason810496 commentedon Mar 26, 2026
Actually, I found that there's no problem for
conf.getfor both Core and TaskSDK, onlyhas_optionwill not respect the provider metadata for both Core and TaskSDK.