ExternalTaskSensor does not fail when failed_states is set along with a execution_date_fn
See original GitHub issueApache 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)
Issue Analytics
- State:
- Created 2 years ago
- Comments:5 (2 by maintainers)
Top GitHub Comments
@o-nikolas , OK, I’ve re-opened the PR after merging in main as #27190.
We can pick up discussion over there, hopefully it’s pretty straightforward.
Hey @eitanme,
I do apologize about that, it wasn’t a great experience for your first contribution! But we really appreciate your time, I’ll definitely have a look at the PR if you re-raise it, feel free to ping me directly on it once it’s up.