Skip to content

Add ExecutableCoordinator for native self-contained Dag bundles#67161

Draft
jason810496 wants to merge 66 commits into
apache:mainfrom
jason810496:refactor/go-sdk/executable-coordinator
Draft

Add ExecutableCoordinator for native self-contained Dag bundles#67161
jason810496 wants to merge 66 commits into
apache:mainfrom
jason810496:refactor/go-sdk/executable-coordinator

Conversation

@jason810496
Copy link
Copy Markdown
Member

@jason810496 jason810496 commented May 19, 2026

Why

The BaseCoordinator interface already supports non-Python SDKs (Java is the prior art),
but there is no in-tree coordinator for native compiled SDKs (Go, Rust, C++, Zig, ...).

This adds one — ExecutableCoordinator — together with a language-agnostic on-disk
bundle format (AFBNDL01) so any compiled SDK produces artifacts the TaskSDK can handle identically.

What

  • Define the AFBNDL01 bundle format: the compiled binary itself, with the Dag source
    and airflow-metadata.yaml manifest appended after end-of-file, located by a fixed
    32-byte trailer ending in the magic AFBNDL01. The file stays directly runnable;
    detection is by trailer magic, not by filename or extension.
  • Implement ExecutableCoordinator (subclass of BaseCoordinator) that:
    • scans a bundle directory via BundleScanner, reading the trailer to extract the
      embedded source and metadata without unpacking;
    • launches the bundle as a subprocess and brokers comm/logs over two listening
      sockets the child connects back to, reusing the ActivitySubprocess plumbing
      introduced for JavaCoordinator;
    • resolves the executable path on the host so the bundle can be invoked even when
      the worker's $PATH differs from the build environment.

Was generative AI tooling used to co-author this PR?

jason810496 and others added 30 commits May 11, 2026 16:08
- Introduced the `apache-airflow-providers-languages-java` package with version 0.1.0.
- Added Java-specific task coordinators and DAG file processors.
- Created documentation including README, changelog, and installation instructions.
- Implemented provider info retrieval and commit tracking.
- Established testing framework with initial unit tests for Java provider components.
- Renamed all instances of "process coordinators" to "runtime coordinators" in the codebase.
- Updated the ProvidersManager and ProvidersManagerTaskRuntime classes to handle runtime coordinators.
- Modified the DagFileProcessorManager to collect file extensions from runtime coordinators.
- Adjusted the Java provider to implement the new runtime coordinator structure.
- Updated tests to reflect changes from process to runtime coordinators.
Tweak coordinator class names, attribute names, and method names to be
shorter and avoid the term 'runtime'.
- Remove Java SDK setup in Dockerfile
- add multi-language extras documentation
- Update TaskInstanceDTO description, and adjust API version in generated files
@jason810496 jason810496 self-assigned this May 19, 2026
@jason810496 jason810496 added go-sdk Label to track work items for golang task sdk area:go-sdk AIP-108: Coordinator Change this to an 'area:' label after AIP acceptance. and removed area:providers area:dev-tools area:DAG-processing provider:standard provider:edge Edge Executor / Worker (AIP-69) / edge3 backport-to-v3-2-test Mark PR with this label to backport to v3-2-test branch labels May 19, 2026
@jason810496 jason810496 moved this to In progress in AIP-72 (addendum): Go-SDK May 19, 2026
# same comm/logs server bootstrap and socket cleanup.
def _start_server() -> socket.socket:
server = socket.socket()
server.bind(("", 0))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AIP-108: Coordinator Change this to an 'area:' label after AIP acceptance. area:ConfigTemplates area:Executors-core LocalExecutor & SequentialExecutor area:go-sdk area:task-sdk go-sdk Label to track work items for golang task sdk kind:documentation

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

3 participants