Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AIRFLOW-4453] Make behavior of none_failed consistent with documentation (#7464) #235

Merged
merged 2 commits into from
Nov 18, 2020

Conversation

ArgentFalcon
Copy link

@ArgentFalcon ArgentFalcon commented Nov 17, 2020

The documentation for the none_failed trigger rule
(https://airflow.apache.org/docs/stable/concepts.html#trigger-rules)
describes its behavior as "all parents have not failed (failed or
upstream_failed) i.e. all parents have succeeded or been skipped."
With that definition in mind, there is no reason that the check for
none_failed should ever have to check for skipped upstream tasks or
set the current task to skipped. The current behavior causes the rule
to skip if all upstream tasks have skipped, which is more than a little
confusing. This fixes the behavior to be consistent with the documentation.

Co-authored-by: root [email protected]


Issue link: WILL BE INSERTED BY boring-cyborg

Make sure to mark the boxes below before creating PR: [x]

  • Description above provides context of the change
  • Commit message/PR title starts with [AIRFLOW-NNNN]. AIRFLOW-NNNN = JIRA ID*
  • Unit tests coverage for changes (not needed for documentation changes)
  • Commits follow "How to write a good git commit message"
  • Relevant documentation is updated including usage instructions.
  • I will engage committers as explained in Contribution Workflow Example.

* For document-only changes commit message can start with [AIRFLOW-XXXX].


In case of fundamental code change, 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 UPDATING.md.
Read the Pull Request Guidelines for more information.

Based on this PR:
https://github.com/lyft/etl/pull/32271

…tation (apache#7464)

The documentation for the `none_failed` trigger rule
(https://airflow.apache.org/docs/stable/concepts.html#trigger-rules)
describes its behavior as "all parents have not failed (`failed` or
`upstream_failed`) i.e. all parents have succeeded or been skipped."
With that definition in mind, there is no reason that the check for
`none_failed` should ever have to check for skipped upstream tasks or
set the current task to `skipped`. The current behavior causes the rule
to skip if all upstream tasks have skipped, which is more than a little
confusing. This fixes the behavior to be consistent with the documentation.

Co-authored-by: root <[email protected]>
@ArgentFalcon
Copy link
Author

@codecov-io
Copy link

codecov-io commented Nov 18, 2020

Codecov Report

Merging #235 (545d8ae) into airflowinfra (8f6994d) will decrease coverage by 0.00%.
The diff coverage is 20.00%.

Impacted file tree graph

@@               Coverage Diff                @@
##           airflowinfra     #235      +/-   ##
================================================
- Coverage         27.82%   27.81%   -0.01%     
================================================
  Files               528      529       +1     
  Lines             36654    36679      +25     
================================================
+ Hits              10198    10202       +4     
- Misses            26456    26477      +21     
Impacted Files Coverage Δ
airflow/example_dags/example_branch_operator.py 100.00% <ø> (ø)
airflow/models/baseoperator.py 53.11% <ø> (ø)
airflow/ti_deps/deps/trigger_rule_dep.py 13.09% <0.00%> (-1.20%) ⬇️
airflow/example_dags/example_nested_branch_dag.py 23.52% <23.52%> (ø)
airflow/utils/trigger_rule.py 100.00% <100.00%> (ø)
airflow/hooks/hdfs_hook.py 27.50% <0.00%> (-2.50%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8f6994d...545d8ae. Read the comment docs.

@@ -211,6 +214,15 @@ def _evaluate_trigger_rule(
"upstream_tasks_state={2}, upstream_task_ids={3}"
.format(tr, num_failures, upstream_tasks_state,
task.upstream_task_ids))
elif tr == TR.NONE_FAILED_OR_SKIPPED:
num_failures = upstream - successes - skipped
Copy link

@milton0825 milton0825 Nov 18, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So actually the name should be all_success_or_skipped to be more accurate?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not entirely sure. I'm kind of confused how it differs from NONE_FAILED, but no one seems to have an issue with it upstream :/

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah the implementation looks exactly the same :/

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually no. For NONE_FAILED_OR_SKIPPED, the task won't be skipped if there is at least one success

@ArgentFalcon
Copy link
Author

💨

@ArgentFalcon ArgentFalcon merged commit ce5c457 into airflowinfra Nov 18, 2020
@eschachar eschachar deleted the airflow_4453 branch September 24, 2022 22:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants