You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "jason810496 (via GitHub)" <gi...@apache.org> on 2026/09/15 12:01:08 UTC
[PR] TS SDK: register mixed-language task handlers with the TaskHandler class [airflow]
jason810496 opened a new pull request, #73188:
URL: https://github.com/apache/airflow/pull/73188
- related ADR: `ts-sdk/adr/0001-mixed-lang-dag-interface.md` (decisions 1 and 3)
- **Depends on `refactor/ts-sdk/bundle-registration` get merged first** (only the last commit is new here).
- **Diff for early review**: https://github.com/jason810496/airflow/compare/refactor/ts-sdk/bundle-registration...feature/ts-sdk/task-handler-class
- **next**: `feature/ts-sdk/taskflow-arg-folding`
## Why
A mixed-language Dag is declared in Python, but the only way to attach a handler was `new Dag(dagId)` plus `dag.task(...)`,
so every such bundle constructed a Dag object for a Dag it does not own.
## How
- `new TaskHandler(dagId, taskId, handler)` binds a function to the Python-owned task it implements and carries nothing else:
no schedule, no task order, no dag_id of its own. Both ids are written out, so nothing depends on a function name a bundler may rename.
- `Dag` becomes exclusively the native case. A dag_id is one or the other: registering a handler for a natively declared Dag is rejected,
rather than becoming a second, disagreeing source for its task list.
- A handler is a value with no call signature, so wiring one the way a native task is wired does not type-check.
That is the guarantee an earlier draft's separate `MixedLangDag` class existed to provide.
- `Registerable` gains its second arm rather than the bundle gaining a second verb, so one `register` call still lists everything in any mixture.
A bundle now holds one entry per dag_id and dispatches on the `(dag_id, task_id)` pair, so one bundle can provide for several Dags.
- The shipped example drops `Dag` entirely. A second Python-owned Dag joins it, sharing a `build_message` task_id with the first on purpose,
and the end-to-end test asserts each reached its own handler. A bundle keyed on the task id alone would answer both from whichever was registered last.
---
##### Was generative AI tooling used to co-author this PR?
- [x] Yes, with help of Claude Code Opus 5 following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] TS SDK: register mixed-language task handlers with the TaskHandler class [airflow]
Posted by "jason810496 (via GitHub)" <gi...@apache.org>.
jason810496 merged PR #73188:
URL: https://github.com/apache/airflow/pull/73188
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org