Uh oh!
There was an error while loading. Please reload this page.
Support extra field for Coordinator - #68694
Conversation
0d27857 to
009f333CompareUh oh!
There was an error while loading. Please reload this page.
009f333 to
e954c5bComparee954c5b to
28b4033Compare28b4033 to
7df6d3bCompareUh oh!
There was an error while loading. Please reload this page.
jason810496
commented
Jun 22, 2026
Hi all, |
7df6d3b to
d8d6f47CompareUh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
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.
d8d6f47 to
0477d7aComparejason810496
commented
Jun 22, 2026
The Mypy provider CI failure is not related so I will merge this. |
Uh oh!
There was an error while loading. Please reload this page.
Backport successfully created: v3-3-testNote: As of Merging PRs targeted for Airflow 3.X In matter of doubt please ask in #release-management Slack channel.
|
* Add optional extra metadata to lang-SDK coordinator config entries 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. * Address Wei's comment
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?