AIP-72: Semantically correct the TI state handling in supervisor #45291
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We transition states to a terminal state in supervisor under
wait()
. We do it when the task has finished running and has reached a "non direct" state. Direct states are ones which need some information to transition into. For example, the reschedule state needs "reschedule date".Code that handles this: https://github.com/apache/airflow/blob/main/task_sdk/src/airflow/sdk/execution_time/supervisor.py#L524-L527
However, a more semantically correct way to transition into a terminal state would be to check if "hey, have we already transitioned our TI into some state, if not, let me do it - to success or failed or something like that."
This PR corrects some of these things semantically so that it reflects the intent.
Checks for
if self.final_state not in STATES_SENT_DIRECTLY
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rst
or{issue_number}.significant.rst
, in newsfragments.