Skip to content

Commit 3849ebb

Browse files
Fix auto upstream dep when expanding non-templated field (#23771)
If you tried to expand via xcom into a non-templated field without explicitly setting the upstream task dependency, the scheduler would crash because the upstream task dependency wasn't being set automatically. It was being set only for templated fields, but now we do it for both.
1 parent 5e3f652 commit 3849ebb

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

airflow/models/mappedoperator.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,8 +300,7 @@ def __attrs_post_init__(self):
300300
if self.dag:
301301
self.dag.add_task(self)
302302
for k, v in self.mapped_kwargs.items():
303-
if k in self.template_fields:
304-
XComArg.apply_upstream_relationship(self, v)
303+
XComArg.apply_upstream_relationship(self, v)
305304
for k, v in self.partial_kwargs.items():
306305
if k in self.template_fields:
307306
XComArg.apply_upstream_relationship(self, v)

tests/models/test_taskinstance.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2835,3 +2835,23 @@ def add_one(x):
28352835
ti.refresh_from_task(dag.get_task("add_one"))
28362836
with pytest.raises(XComForMappingNotPushed):
28372837
ti.run()
2838+
2839+
2840+
def test_expand_non_templated_field(dag_maker, session):
2841+
"""Test expand on non-templated fields sets upstream deps properly."""
2842+
2843+
class SimpleBashOperator(BashOperator):
2844+
template_fields = ()
2845+
2846+
with dag_maker(dag_id="product_same_types", session=session) as dag:
2847+
2848+
@dag.task
2849+
def get_extra_env():
2850+
return [{"foo": "bar"}, {"foo": "biz"}]
2851+
2852+
SimpleBashOperator.partial(task_id="echo", bash_command="echo $FOO").expand(env=get_extra_env())
2853+
2854+
dag_maker.create_dagrun()
2855+
2856+
echo_task = dag.get_task("echo")
2857+
assert "get_extra_env" in echo_task.upstream_task_ids

0 commit comments

Comments
 (0)