Repository navigation
Conversation
samraj2k
requested review from
amoghrajesh,
ashb,
bugraoz93,
ephraimbuddy,
gopidesupavan,
jason810496,
jedcunningham,
jscheffl and
potiuk
as code owners
October 17, 2026 09:30
Deployments that add or remove bundles need to apply a new bundle list without restarting Dag processors. Keep the existing configuration format so this capability does not depend on a new public extension point.
Deployments need to distinguish an intentional empty configuration from a source failure, including when starting a new processor. Command text and secret paths must retain the same meaning as other Airflow configuration options.
Manager construction should reuse the accepted configuration so processors control when to reconcile it. Workers must still resolve newly published bundles before their cached interval expires, and metadata checks must work without installed bundle classes.
samraj2k
force-pushed
the
sameer.raj/reload-dag-bundle-config
branch
from
October 17, 2026 15:49
905b796 to
b434339
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dag processors currently read the bundle list only at startup. A deployment must restart them to add or remove a bundle. In a large deployment, these restarts are difficult when bundles are added frequently.
This PR adds the capability of hot reload using the existing
dag_bundle_config_list. The Dag processor checks for changes at the existingbundle_refresh_check_interval. The configuration source returns the complete list of bundles.A deployment can supply the list through Airflow's existing
_CMDor_SECRETconfiguration mechanism. For example, a command can read a file or call an internal API:Existing literal environment variables and
airflow.cfgvalues keep their startup behavior. Users do not need to rename their environment variables unless they want to enable reload. The ordinary environment variable takes precedence over_CMDand_SECRET.Behavior
For example, a deployment can publish these lists without restarting the Dag processor:
[]removes all bundles. Blank output is treated as a failed read, so a command must report a failure rather than return[].[]starts with no bundles.--bundle-namestop parsing removed bundles locally, but never deactivate missing bundles globally. An unfiltered processor is needed for global deactivation.Multiple Dag processors
The approach allows eventual convergence. Processors may see a change at different times. For example:
[finance].[]and marksfinanceinactive.financeactive again, then stops permanently.Each unfiltered processor reconciles bundle active state with the database on every check, even when its local list has not changed. Processor B can therefore repair that stale write. The state converges when surviving processors see the same list and continue processing; the change is not immediate across all hosts.
Finish existing Dag runs before removing a bundle if those runs need to complete. Tasks and callbacks can still need its definition.
This PR is based on
mainand can be reviewed independently of #73209 and #73217. It adds no public source class, new configuration option, database migration, orDagFileParseRequestchange. The configuration key is marked sensitive to support_CMDand_SECRET, so configuration views that hide sensitive values will also hide this value.Testing
mainin the local environment.[]. Checked service, parser, and task logs for unexpected errors and repeated removal warnings.Related: #61645, #71111, #73209, #73217.
Was generative AI tooling used to co-author this PR?
Generated-by: Codex (GPT-6) following the guidelines
Drafted-by: Codex (GPT-6) (no human review before posting)