Skip to content

ExternalTaskSensor deferrable doesn't fail with failed_states #41140

@mjohansenwork

Description

@mjohansenwork

Apache Airflow version

2.9.3

If "Other Airflow 2 version" selected, which one?

No response

What happened?

For ExternalTaskSensor, when I specify deferrable=True and failed_states=["failed"], the operator hangs in deferred mode and repeatedly pokes the upstream DAG status. This works fine if I don't use deferrable.

What you think should happen instead?

I would expect this to fail immediately if the upstream DAG status is failed.

How to reproduce

Create 2 DAGs, upstream and downstream. Make the upstream DAG fail intentionally. Make the downstream DAG depend on the upstream DAG using ExternalTaskSensor, setting deferrable=True and failed_states=["failed"]. Observe that the downstream ExternalTaskSensor loops and pokes continuously, even though the upstream DAG has failed.

Operating System

MacOS

Versions of Apache Airflow Providers

No response

Deployment

Other Docker-based deployment

Deployment details

I'm using the Astronomer runtime 11.7.0 docker image.

Anything else?

I noticed that in deferrable mode, the failed_states don't appear to be forwarded to the WorkflowTrigger here, which seems like a bug.
Possibly related:
#16204 and #27190 #34207 and #34204

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions