You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by pi...@apache.org on 2025/08/12 14:46:55 UTC

(airflow) branch v3-0-test updated: [v3-0-test] fix: corrects issues with edge rendering on the graph view (#53998) (#54412)

This is an automated email from the ASF dual-hosted git repository.

pierrejeambrun pushed a commit to branch v3-0-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-0-test by this push:
     new f0017e75062 [v3-0-test] fix: corrects issues with edge rendering on the graph view (#53998) (#54412)
f0017e75062 is described below

commit f0017e75062943fcb8a3ae0f01190f04439e0dad
Author: github-actions[bot] <41...@users.noreply.github.com>
AuthorDate: Tue Aug 12 16:46:48 2025 +0200

    [v3-0-test] fix: corrects issues with edge rendering on the graph view (#53998) (#54412)
    
    * fix: corrects issues with edge rendering on the graph view
    
    * fix: moved edge deduplication logic to formatChildNode.
    
    ---------
    (cherry picked from commit 7f8383b1d98df8ee6b510af0f4a0564970624c24)
    
    Co-authored-by: codecae <co...@users.noreply.github.com>
    Co-authored-by: Curtis Bangert <ba...@gmail.com>
---
 .../src/airflow/ui/src/components/Graph/useGraphLayout.ts | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/airflow-core/src/airflow/ui/src/components/Graph/useGraphLayout.ts b/airflow-core/src/airflow/ui/src/components/Graph/useGraphLayout.ts
index 9c74318db75..d09455e08b0 100644
--- a/airflow-core/src/airflow/ui/src/components/Graph/useGraphLayout.ts
+++ b/airflow-core/src/airflow/ui/src/components/Graph/useGraphLayout.ts
@@ -167,6 +167,8 @@ const generateElkGraph = ({
     }
 
     if (!Boolean(isOpen) && node.children !== undefined) {
+      const seenEdges = new Set<string>();
+
       filteredEdges = filteredEdges
         // Filter out internal group edges
         .filter((fe) => !(childIds.includes(fe.source_id) && childIds.includes(fe.target_id)))
@@ -175,7 +177,18 @@ const generateElkGraph = ({
           ...fe,
           source_id: childIds.includes(fe.source_id) ? node.id : fe.source_id,
           target_id: childIds.includes(fe.target_id) ? node.id : fe.target_id,
-        }));
+        }))
+        // Deduplicate edges based on source_id and target_id composite
+        .filter((fe) => {
+          const edgeKey = `${fe.source_id}-${fe.target_id}`;
+
+          if (seenEdges.has(edgeKey)) {
+            return false;
+          }
+          seenEdges.add(edgeKey);
+
+          return true;
+        });
       closedGroupIds.push(node.id);
     }