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

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


The following commit(s) were added to refs/heads/master by this push:
     new a53679b4dce [fix](load) fix empty statistics for forwarded INSERT 
(#64439)
a53679b4dce is described below

commit a53679b4dce4ce7b100db6e994004cb7f5d62fa0
Author: hui lai <[email protected]>
AuthorDate: Fri Jun 12 15:32:22 2026 +0800

    [fix](load) fix empty statistics for forwarded INSERT (#64439)
    
    ### What problem does this PR solve?
    
    When `INSERT INTO ... SELECT` is forwarded from a follower FE to the
    master FE, `SHOW LOAD` could show an empty `JobDetails`, such as
    `ScannedRows=0`, `LoadBytes=0`, `TaskNumber=0`, and empty backend lists.
    
    The root cause is that the insert load job is registered with a real
    `jobId`, but when coordinator creation falls back to the regular
    `Coordinator` / `CloudCoordinator` path, that `jobId` was not passed
    into the coordinator. Therefore, the coordinator kept the default
    `jobId=-1` and did not initialize or update the corresponding
    `LoadManager` progress. The load job was still recorded as `FINISHED`,
    but its `LoadStatistic` remained empty when `SHOW LOAD` rendered
    `JobDetails`.
    
    This PR preserves the insert `jobId` in the regular `Coordinator` and
    `CloudCoordinator` fallback paths, so `initJobProgress()` and
    `updateJobProgress()` update the same `InsertLoadJob` that is later
    recorded and displayed by `SHOW LOAD`.
---
 fe/fe-core/src/main/java/org/apache/doris/catalog/EnvFactory.java   | 2 +-
 .../main/java/org/apache/doris/cloud/catalog/CloudEnvFactory.java   | 2 +-
 .../src/main/java/org/apache/doris/cloud/qe/CloudCoordinator.java   | 5 +++++
 fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java       | 6 ++++++
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/EnvFactory.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/EnvFactory.java
index 3ecdb6ddef3..8a4e0dcb331 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/EnvFactory.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/EnvFactory.java
@@ -156,7 +156,7 @@ public class EnvFactory {
         if (planner instanceof NereidsPlanner && 
SessionVariable.canUseNereidsDistributePlanner(context)) {
             return new NereidsCoordinator(context, (NereidsPlanner) planner, 
statsErrorEstimator, jobId);
         }
-        return new Coordinator(context, planner, statsErrorEstimator);
+        return new Coordinator(context, planner, statsErrorEstimator, jobId);
     }
 
     // Used for broker load task/export task/update coordinator
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnvFactory.java 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnvFactory.java
index 5b240dcd8ef..437c1cc0ba2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnvFactory.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudEnvFactory.java
@@ -170,7 +170,7 @@ public class CloudEnvFactory extends EnvFactory {
         if (planner instanceof NereidsPlanner && 
SessionVariable.canUseNereidsDistributePlanner()) {
             return new NereidsCoordinator(context, (NereidsPlanner) planner, 
statsErrorEstimator, jobId);
         }
-        return new CloudCoordinator(context, planner, statsErrorEstimator);
+        return new CloudCoordinator(context, planner, statsErrorEstimator, 
jobId);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/qe/CloudCoordinator.java 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/qe/CloudCoordinator.java
index 92b3ff4c0ac..39eb6d36ede 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/cloud/qe/CloudCoordinator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/qe/CloudCoordinator.java
@@ -45,6 +45,11 @@ public class CloudCoordinator extends Coordinator {
         super(context, planner, statsErrorEstimator);
     }
 
+    public CloudCoordinator(ConnectContext context,
+                            Planner planner, StatsErrorEstimator 
statsErrorEstimator, long jobId) {
+        super(context, planner, statsErrorEstimator, jobId);
+    }
+
     public CloudCoordinator(Long jobId, TUniqueId queryId, DescriptorTable 
descTable, List<PlanFragment> fragments,
                        List<ScanNode> scanNodes, String timezone, boolean 
loadZeroTolerance,
                     boolean enbaleProfile) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
index b8bdc51f371..b9b12a1abd1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java
@@ -333,6 +333,12 @@ public class Coordinator implements CoordInterface {
         this.statsErrorEstimator = statsErrorEstimator;
     }
 
+    public Coordinator(ConnectContext context, Planner planner,
+            StatsErrorEstimator statsErrorEstimator, long jobId) {
+        this(context, planner, statsErrorEstimator);
+        this.jobId = jobId;
+    }
+
     // Used for query/insert/test
     public Coordinator(ConnectContext context, Planner planner) {
         this.context = context;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to