-
Notifications
You must be signed in to change notification settings - Fork 16.3k
Description
Apache Airflow version: 2.x including main
What happened:
I am using an execution_date_fn in an ExternalTaskSensor that also sets allowed_states=['success'] and failed_states=['failed']. When one of the N upstream tasks fails, the sensor will hang forever in the poke method because there is a bug in checking for failed_states.
What you expected to happen:
I would expect the ExternalTaskSensor to fail.
I think this is due to a bug in the poke method where it should check if count_failed > 0 as opposed to checking count_failed == len(dttm_filter). I've created a fix locally that works for my case and have submitted a PR #16205 for it as reference.
How to reproduce it:
Create any ExternalTaskSensor that checks for failed_states and have one of the external DAGs tasks fail while others succeed.
E.g.
ExternalTaskSensor(
task_id='check_external_dag',
external_dag_id='external_dag',
external_task_id=None,
execution_date_fn=dependent_date_fn,
allowed_states=['success'],
failed_states=['failed'],
check_existence=True)