Skip to content

Fix handling AirflowFailException on_retry_callback  #60172

Open

Description

@ndellosa95

Description

This was previously possible in Airflow 2 using this solution. However, in Airflow 3 RuntimeTaskInstanceProtocol does not expose a method for modifying the task state directly.

My suggestion would be to create a new exception type that can be raised from on_retry_callback to request a state change to either success or failure.

Update: While this is not specified, it seema a bug that it does not work that way: AirflowFailException raised in on_retry_callback or any other state-change callback should immediately fail the task.

Use case/motivation

We have some long-running tasks (>24hr) that sometimes fail fast due to transient issues. We want to be able to retry whenever these fast fails occur. However, if a failure occurs hours into the task, we would prefer not to retry, as the task must be completed by a certain time and failures of this sort typically represent an actual issue we want to look into.

Related issues

Just the discussion item here from years ago as far as I can tell.

Are you willing to submit a PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Activity

  1. boring-cyborg commented on Jan 6, 2026

    @boring-cyborg

    Thanks for opening your first issue here! Be sure to follow the issue template! If you are willing to raise PR to address this issue please do so, no need to wait for approval.

  2. potiuk commented on Jan 6, 2026

    @potiuk
    Member

    There is already exception for that:

    class AirflowFailException(AirflowException):
        """Raise when the task should be failed without retrying."""

    There is no need to have "success" exception, you just exit from the method when it happens

  3. potiuk commented on Jan 6, 2026

    @potiuk
    Member
  4. ndellosa95 commented on Jan 7, 2026

    @ndellosa95
    Author

    @potiuk I think you are misunderstanding my request. AirflowFailException only works when called from within operator/task code. When you call it within an on_retry_callback it simply fails the callback and retries as normal. See the example here, which I linked above, for what I mean.

  5. potiuk commented on Jan 7, 2026

    @potiuk
    Member

    So I guess you are saying that it's a bug in handling this exception - because there is no reason why raising AirflowFailException in on_retry_callback should continue retrying. If that's the case, then this is a bug IMHO

  6. changed the title [-]Enable conditional retry logic in `on_retry_callback` in Airflow 3[/-] [+]Fix handling AirflowFailException `on_retry_callback` [/+] on Jan 7, 2026
  7. reopened this on Jan 7, 2026
  8. 5 remaining items

  9. potiuk commented on Mar 2, 2026

    @potiuk
    Member

    @ndellosa95 We are unassigning you from this issue as part of our updated assignment policy.

    This is not meant to discourage your contribution — quite the opposite! You are still very welcome to work on this issue and submit a PR for it. Simply comment that you are working on it and open a PR when ready.

    We found that formal assignments were not working well, as they often prevented others from contributing when the assignee was not actively working on the issue.

  10. IvanildoBarauna commented on Mar 25, 2026

    @IvanildoBarauna

    I working it

  11. added 2 commits that reference this issue on May 13, 2026
    562f94f
    6a4247c
  12. added 3 commits that reference this issue on Jun 14, 2026
    bf811c5
    d767698
    588e18e
  13. added 4 commits that reference this issue on Jul 22, 2026
    3d573eb
    94c4930
    fa63802
    85ed986
  14. added a commit that references this issue on Aug 13, 2026
    18a5399
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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