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/29 08:40:04 UTC

(doris) branch fe_local_shuffle updated: [debug](local shuffle) Log pooling fragments with/without LE for hang diagnosis

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 e158c2f82d5 [debug](local shuffle) Log pooling fragments with/without LE for hang diagnosis
e158c2f82d5 is described below

commit e158c2f82d5e01aea53b734ac52ae07472ba0420
Author: 924060929 <la...@selectdb.com>
AuthorDate: Wed Apr 29 16:39:50 2026 +0800

    [debug](local shuffle) Log pooling fragments with/without LE for hang diagnosis
    
    ThriftPlansBuilder: for every pooling (LocalShuffleAssignedJob) fragment,
    log qid + leNodes count + parallelInstances + instance count.
    If leNodes=0 + pooling=true → that's the bug (sender/receiver mismatch).
---
 .../doris/qe/runtime/ThriftPlansBuilder.java       | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

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 6292843ab67..29a8d4502c4 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
@@ -407,17 +407,21 @@ public class ThriftPlansBuilder {
             params.setFragment(planThrift);
             if (planThrift.isSetPlan()) {
                 long leCount = planThrift.getPlan().getNodes().stream()
-                        .filter(n -> n.getNodeType() == org.apache.doris.thrift.TPlanNodeType.LOCAL_EXCHANGE_NODE)
+                        .filter(n -> n.getNodeType()
+                                == org.apache.doris.thrift.TPlanNodeType.LOCAL_EXCHANGE_NODE)
                         .count();
-                if (leCount > 0) {
+                boolean hasPooling = fragmentPlan.getInstanceJobs().stream().anyMatch(
+                        org.apache.doris.nereids.trees.plans.distribute.worker.job
+                                .LocalShuffleAssignedJob.class::isInstance);
+                if (hasPooling) {
                     org.apache.logging.log4j.LogManager.getLogger(ThriftPlansBuilder.class).info(
-                            "ThriftPlan qid={} be={} fragment={} nodes={} leNodes={} rootType={}",
-                            org.apache.doris.common.util.DebugUtil.printId(coordinatorContext.queryId),
-                            worker.address(),
-                            fragment.getFragmentId(),
-                            planThrift.getPlan().getNodesSize(),
-                            leCount,
-                            planThrift.getPlan().getNodes().get(0).getNodeType());
+                            "ThriftPlan qid={} fragment={} leNodes={} pooling=true"
+                            + " parallelInstances={} instances={}",
+                            org.apache.doris.common.util.DebugUtil.printId(
+                                    coordinatorContext.queryId),
+                            fragment.getFragmentId(), leCount,
+                            params.isSetParallelInstances() ? params.getParallelInstances() : -1,
+                            fragmentPlan.getInstanceJobs().size());
                 }
             }
             params.setLocalParams(Lists.newArrayList());


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