Support extra field for Coordinator #68694
Open
jason810496 wants to merge 1 commit into
Open
Conversation
0d27857 to
009f333
Compare
phanikumv
reviewed
Jun 18, 2026
009f333 to
e954c5b
Compare
1 task
e954c5b to
28b4033
Compare
Open
1 task
Coordinator config entries need a place to carry deployment metadata that other components consume without coupling it to the coordinator instance. The coordinator itself never receives this metadata; components such as KubernetesExecutor read it by queue when launching worker pods.
28b4033 to
7df6d3b
Compare
phanikumv
reviewed
Jun 19, 2026
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.
Why
While verifying KuberntesExecutor setup for Multi-Lang feature, I found that we need a new config mapping to represent
coordinator -> pod_template_file. For example, KubernetesExecutor needs image with JVM runtime for Java-Task.How
Here're several directions that I went through:
extraobject on the[sdk] coordinatorsentry. Regarding theextrafield naming, I also consideredexecutor,deployment, etc. But I prefer asextrato make it more extendable as user might introduce other optional fields inextrafor non-deployment purpose (e.g. referencingconn_id).{ "jdk-17": { "classpath": "airflow.sdk.coordinators.java.JavaCoordinator", "kwargs": {"java_executable": "/usr/lib/jvm/java-17-openjdk/bin/java", "jvm_args": ["-Xmx1024m"]}, "extra": {"pod_template_file": "/opt/airflow/pod_templates/java.yaml"} } }pod_template_filefield at first level -- Cons: coupling the optional / provider-level field at first level, needs coordinator code change for every new field.{ "jdk-17": { "classpath": "airflow.sdk.coordinators.java.JavaCoordinator", "kwargs": {"java_executable": "/usr/lib/jvm/java-17-openjdk/bin/java", "jvm_args": ["-Xmx1024m"]}, "pod_template_file": "/opt/airflow/pod_templates/java.yaml" } }pod_template_fileinkwargslevel -- Same cons as point 2.{ "jdk-17": { "classpath": "airflow.sdk.coordinators.java.JavaCoordinator", "kwargs": { "java_executable": "/usr/lib/jvm/java-17-openjdk/bin/java", "jvm_args": ["-Xmx1024m"], "pod_template_file": "/opt/airflow/pod_templates/java.yaml" }, } }AIRFLOW__KUBERNETES__COORDINATOR_TO_POD_TEMPLATE_FILEThe cons is quite obvious, user have to understand the
queue -> coordinator -> pod_templaterelationship to setup the Multi-Lang with KubernetesExecutor properly. IMO, it's a too complicated, and it's fine to store the optional metadata in core level config but parsing the optional info at provider level.What
extrafield to_CoordinatorSpec(kept separate fromkwargs) andCoordinatorManager.extra_for_queue.CoordinatorManager.extra_for_queuemethod will not instantiate the coordinator instance.Next
Was generative AI tooling used to co-author this PR?