Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
AIP-72: Fix recursion bug with
XComArg
It fixes the following bug ```python {"timestamp":"2024-12-20T10:38:56.890735","logger":"task","error_detail": [{"exc_type":"RecursionError","exc_value":"maximum recursion depth exceeded in comparison","syntax_error":null,"is_cause":false,"frames": [ {"filename":"/opt/airflow/task_sdk/src/airflow/sdk/execution_time/task_runner.py","lineno":382,"name":"main"}, {"filename":"/opt/airflow/task_sdk/src/airflow/sdk/execution_time/task_runner.py","lineno":317,"name":"run"}, {"filename":"/opt/airflow/airflow/models/baseoperator.py","lineno":378,"name":"wrapper"}, {"filename":"/opt/airflow/providers/src/airflow/providers/standard/operators/python.py","lineno":182,"name":"execute"}, {"filename":"/opt/airflow/task_sdk/src/airflow/sdk/definitions/baseoperator.py","lineno":660,"name":"__setattr__"}, {"filename":"/opt/airflow/task_sdk/src/airflow/sdk/definitions/baseoperator.py","lineno":1126,"name":"_set_xcomargs_dependency"}, {"filename":"/opt/airflow/airflow/models/xcom_arg.py","lineno":132,"name":"apply_upstream_relationship"}, {"filename":"/opt/airflow/airflow/models/xcom_arg.py","lineno":118,"name":"iter_xcom_references"}, {"filename":"/opt/airflow/airflow/models/xcom_arg.py","lineno":121,"name":"iter_xcom_references"}, {"filename":"/opt/airflow/airflow/models/xcom_arg.py","lineno":118,"name":"iter_xcom_references"}, ... ``` To reproduce just run `tutorial_dag` or the following minimal dag: ```python import pendulum from airflow.models.dag import DAG from airflow.providers.standard.operators.python import PythonOperator with DAG( "sdk_tutorial_dag", schedule=None, start_date=pendulum.datetime(2021, 1, 1, tz="UTC"), catchup=False, tags=["example"], ) as dag: dag.doc_md = __doc__ def extract(**kwargs): ti = kwargs["ti"] data_string = '{"1001": 301.27, "1002": 433.21, "1003": 502.22}' ti.xcom_push("order_data", data_string) extract_task = PythonOperator( task_id="extract", python_callable=extract, ) extract_task ```
- Loading branch information