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

   * Fix grid view crash when task converted to TaskGroup (#61208)
   
   This commit fixes a TypeError crash in the grid view endpoint when a task is 
converted to a TaskGroup (or vice versa) between DAG versions.
   
   Root Cause:
   - Old DagRuns had task structure with children=None
   - New DagRuns had TaskGroup structure with children=[...]
   - The _merge_node_dicts function tried to iterate over None -> TypeError
   
   Changes:
   1. Added defensive None checks in _merge_node_dicts function
   2. Only merge children if both nodes have children (not None)
   3. Added comprehensive unit tests for edge cases
   4. Added integration test for task->TaskGroup conversion scenario
   
   Fixes #61208
   
   * Fix merge logic and add comprehensive tests per reviewer feedback
   
   * Fix integration test: use SerializedDagModel.write_dag instead of 
DBDagBag.bag_dag
   
   * Fix import: use serialized_objects.LazyDeserializedDAG instead of 
definitions.dag
   
   * Simplify test: use only sync_dag_to_db (removes redundant write_dag calls)
   
   * Trigger CI re-run
   
   * Fix test case: invert v1/v2 to test TaskGroup-to-task conversion
   
   The bug in issue #61208 occurs when a TaskGroup is converted to a simple 
task, not the other way around. This commit inverts Version 1 and Version 2 in 
the test case to properly test the actual bug scenario:
   - Version 1: task_a is a TaskGroup with subtasks
   - Version 2: task_a becomes a simple task
   
   Updated all comments and assertions accordingly.
   
   * Fix trailing blank line in test_grid.py
   
   Pre-commit hooks removed trailing blank line - updating to match.
   
   * Improve test assertions with full expected JSON
   
   - Add API call after v1 to verify TaskGroup structure
   - Replace partial assertions with full expected JSON comparison
   - Verify v1 shows TaskGroup with children, v2 shows simple task
   - Addresses review feedback from @jason810496
   
   * Adjust and clean test
   
   ---------
   
   
   (cherry picked from commit 060532bddbc57e7183672e64352ab44902b06372)
   
    <!-- SPDX-License-Identifier: Apache-2.0
         https://www.apache.org/licenses/LICENSE-2.0 -->
   
   <!--
   Thank you for contributing!
   
   Please provide above a brief description of the changes made in this pull 
request.
   Write a good git commit message following this guide: 
http://chris.beams.io/posts/git-commit/
   
   Please make sure that your code changes are covered with tests.
   And in case of new features or big changes remember to adjust the 
documentation.
   
   Feel free to ping (in general) for the review if you do not see reaction for 
a few days
   (72 Hours is the minimum reaction time you can expect from volunteers) - we 
sometimes miss notifications.
   
   In case of an existing issue, reference it using one of the following:
   
   * closes: #ISSUE
   * related: #ISSUE
   -->
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   <!--
   If generative AI tooling has been used in the process of authoring this PR, 
please
   change below checkbox to `[X]` followed by the name of the tool, uncomment 
the "Generated-by".
   -->
   
   - [ ] Yes (please specify the tool below)
   
   <!--
   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` or `{issue_number}.significant.rst`, in 
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
   


-- 
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