You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by hu...@apache.org on 2026/04/28 13:39:26 UTC

(doris) branch fe_local_shuffle updated: [debug](local shuffle) Add diagnostic logging for merge_into LE investigation

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

924060929 pushed a commit to branch fe_local_shuffle
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/fe_local_shuffle by this push:
     new ebea64a7436 [debug](local shuffle) Add diagnostic logging for merge_into LE investigation
ebea64a7436 is described below

commit ebea64a74367fa79f0874fe3ac6fd97ecd7ee90a
Author: 924060929 <la...@selectdb.com>
AuthorDate: Tue Apr 28 21:39:05 2026 +0800

    [debug](local shuffle) Add diagnostic logging for merge_into LE investigation
    
    AddLocalExchange: log fragment ID, maxPerBeInstances, root before/after
    ThriftPlansBuilder: log LOCAL_EXCHANGE_NODE count in serialized Thrift plan
---
 .../java/org/apache/doris/planner/AddLocalExchange.java    | 14 +++++++++++++-
 .../org/apache/doris/qe/runtime/ThriftPlansBuilder.java    | 13 +++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/AddLocalExchange.java b/fe/fe-core/src/main/java/org/apache/doris/planner/AddLocalExchange.java
index 39ef75f7881..e734c9b43eb 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/AddLocalExchange.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/AddLocalExchange.java
@@ -44,11 +44,23 @@ public class AddLocalExchange {
                     .collect(java.util.stream.Collectors.groupingBy(
                             j -> j.getAssignedWorker().id(), java.util.stream.Collectors.counting()))
                     .values().stream().mapToLong(Long::longValue).max().orElse(0);
+            PlanFragment fragment = pipePlan.getFragmentJob().getFragment();
             if (maxPerBeInstances <= 1) {
+                org.apache.logging.log4j.LogManager.getLogger(AddLocalExchange.class).info(
+                        "addLocalExchange SKIP: fragment={} maxPerBeInstances={} planRoot={}",
+                        fragment.getFragmentId(), maxPerBeInstances,
+                        fragment.getPlanRoot().getClass().getSimpleName());
                 continue;
             }
-            PlanFragment fragment = pipePlan.getFragmentJob().getFragment();
+            String rootBefore = fragment.getPlanRoot().getClass().getSimpleName()
+                    + "#" + fragment.getPlanRoot().getId();
             addLocalExchangeForFragment(fragment, context);
+            String rootAfter = fragment.getPlanRoot().getClass().getSimpleName()
+                    + "#" + fragment.getPlanRoot().getId();
+            org.apache.logging.log4j.LogManager.getLogger(AddLocalExchange.class).info(
+                    "addLocalExchange DONE: fragment={} maxPerBeInstances={} rootBefore={} rootAfter={} changed={}",
+                    fragment.getFragmentId(), maxPerBeInstances,
+                    rootBefore, rootAfter, !rootBefore.equals(rootAfter));
         }
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/runtime/ThriftPlansBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/qe/runtime/ThriftPlansBuilder.java
index 39f49dbedfd..d48cac74ac6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/runtime/ThriftPlansBuilder.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/runtime/ThriftPlansBuilder.java
@@ -405,6 +405,19 @@ public class ThriftPlansBuilder {
             TPlanFragment planThrift = fragment.toThrift();
             planThrift.query_cache_param = fragment.queryCacheParam;
             params.setFragment(planThrift);
+            if (planThrift.isSetPlan()) {
+                long leCount = planThrift.getPlan().getNodes().stream()
+                        .filter(n -> n.getNodeType() == org.apache.doris.thrift.TPlanNodeType.LOCAL_EXCHANGE_NODE)
+                        .count();
+                if (leCount > 0) {
+                    org.apache.logging.log4j.LogManager.getLogger(ThriftPlansBuilder.class).info(
+                            "ThriftPlan fragment={} totalNodes={} localExchangeNodes={} rootType={}",
+                            fragment.getFragmentId(),
+                            planThrift.getPlan().getNodesSize(),
+                            leCount,
+                            planThrift.getPlan().getNodes().get(0).getNodeType());
+                }
+            }
             params.setLocalParams(Lists.newArrayList());
             params.setWorkloadGroups(coordinatorContext.getWorkloadGroups());
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org