Skip to content

ExternalTaskSensor does not fail when failed_states is set along with a execution_date_fn #16204

@eitanme

Description

@eitanme

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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions