anzinmhd opened a new pull request, #74188:
URL: https://github.com/apache/airflow/pull/74188

   <!-- SPDX-License-Identifier: Apache-2.0
        https://www.apache.org/licenses/LICENSE-2.0 -->
   
   ## What is the issue?
   
   When a `ShortCircuitOperator` is used inside a mapped task group, transitive 
downstream tasks can incorrectly execute even when the short-circuit condition 
is `False`.
   
   The `ShortCircuitOperator` records all downstream tasks that should be 
skipped in its `SkipMixin` XCom. However, `NotPreviouslySkippedDep` only checks 
the direct upstream relatives of a task.
   
   As a result, a transitive downstream task with a permissive trigger rule 
such as `all_done` can run even though it was explicitly recorded as skipped by 
the upstream `ShortCircuitOperator`.
   
   For example:
   
   ```text
   group.gate
       |
   group.a
       |
   group.b (all_done)
   ```
   
   For a short-circuited map index, `group.a` is skipped correctly, but 
`group.b` can incorrectly run.
   
   ## What does this PR change?
   
   Update `NotPreviouslySkippedDep` to inspect all upstream relatives instead 
of only direct upstream relatives.
   
   This allows the dependency to find the upstream `SkipMixin` task and honor 
its recorded skip decision for transitive downstream tasks.
   
   ## Tests
   
   Added a regression test covering:
   
   * A `ShortCircuitOperator` inside a mapped task group.
   * A transitive downstream task using `TriggerRule.ALL_DONE`.
   * Skip decisions for a specific map index.
   * Ensuring the affected map index is skipped.
   * Ensuring the unaffected map index is not skipped.
   
   ## Validation
   
   The following checks were run successfully:
   
   * Focused `NotPreviouslySkippedDep` unit tests.
   * Ruff checks for the modified files.
   * Manual reproduction of the reported issue.
   
   The manual reproduction now results in:
   
   ```text
   Map 0:
     gate -> SUCCESS
     a    -> SUCCESS
     b    -> SUCCESS
   
   Map 1:
     gate -> SUCCESS
     a    -> SKIPPED
     b    -> SKIPPED
   ```
   
   closes: #74175
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   * [x] Yes (ChatGPT)
   
   <!--
   Generated-by: ChatGPT following the guidelines:
   
https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions
   -->
   <!--
   Generated-by: [Tool Name] following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   -->
   
   ---
   
   * Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
 for more information. Note: commit author/co-author name and email in commits 
become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
 is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License 
Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: 
`{pr_number}.significant.rst`, in 
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
 You can add this file in a follow-up commit after the PR is created so you 
know the PR number.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to