The GitHub Actions job "Tests (AMD)" on airflow.git/main has failed.
Run started by GitHub user potiuk (triggered by potiuk).

Head commit for run:
6a95da5e98d755860aec60bf946017bbc5e7442e / Kaxil Naik <[email protected]>
Register operator-declared XCom classes from a worker-side DAG walk (#67875)

The common-ai typed-XCom feature registered an operator's ``output_type``
Pydantic class for XCom deserialization as a side effect of operator
``__init__``. That misses two real cases:

1. Mapped producers. ``@task.llm(output_type=X).expand(...)`` registers X only
   when the mapped task unmaps and runs (which goes through ``__init__``), in
   the producer's own process. A downstream consumer runs in a different process
   that loads the DAG with the producer still an unexpanded ``MappedOperator``
   (no ``__init__``), so X is never registered there and deserialization raises
   ``ImportError``. The shipped ``example_llm_analysis_pipeline`` is this shape.

2. Workers that reconstruct operators without ``__init__`` -- e.g. a parsed-DAG
   cache that loads operators -- never run the registration, so
   the same ``ImportError`` occurs.

Move registration to the worker: ``task_runner.parse()`` walks the loaded DAG's
tasks and registers each operator's declared deserialization classes before any
task runs. It reads the classes off real operators and off not-yet-expanded
mapped operators (``partial_kwargs``), and works regardless of how the DAG was
loaded. Operators opt in by declaring ``deserialization_allowed_class_fields``
(``("output_type",)`` for the common-ai operators); the generic Pydantic
type-tree walk (``Union``/``Optional``/``list``) lives in ``serde`` as
``iter_pydantic_models``.

The operator ``__init__`` registration side effect is removed. Operators probe
``serde.SUPPORTS_OPERATOR_DESERIALIZATION_WALKER`` and fall back to dumping the
model to a ``dict`` on cores that lack the walk, so the value stays
deserializable without an allow-list edit. ``allow_class`` (and thus the gate)
is unchanged: only an operator-declared class, sourced from the trusted parsed
DAG, is registered, and registration stays exact-match.

Report URL: https://github.com/apache/airflow/actions/runs/26810681326

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to