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

morningman pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new e6fa9979147 branch-4.0: [enhance](load) only set brokerLoadBatchSize 
when enableMemtableOnSinkNode is true (#63801)
e6fa9979147 is described below

commit e6fa99791477523aac58f7e3048b59d709ecdaf9
Author: hui lai <[email protected]>
AuthorDate: Mon Jun 1 11:29:20 2026 +0800

    branch-4.0: [enhance](load) only set brokerLoadBatchSize when 
enableMemtableOnSinkNode is true (#63801)
    
    pick #60301
---
 .../apache/doris/load/loadv2/BrokerLoadJob.java    |  8 +++
 .../apache/doris/load/loadv2/LoadLoadingTask.java  |  4 +-
 .../doris/load/loadv2/LoadLoadingTaskTest.java     | 57 ++++++++++++++++++++++
 3 files changed, 68 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java
index f29ea9f168e..3d1af6878b7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java
@@ -18,6 +18,7 @@
 package org.apache.doris.load.loadv2;
 
 import org.apache.doris.analysis.BrokerDesc;
+import org.apache.doris.analysis.IndexDef;
 import org.apache.doris.analysis.StorageBackend;
 import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.Database;
@@ -307,6 +308,13 @@ public class BrokerLoadJob extends BulkLoadJob {
                 }
                 boolean isEnableMemtableOnSinkNode =
                         table.getTableProperty().getUseSchemaLightChange() && 
this.enableMemTableOnSinkNode;
+                boolean hasInvertedIndexV1 = 
table.hasIndexOfType(IndexDef.IndexType.INVERTED)
+                        && table.getInvertedIndexFileStorageFormat()
+                        == 
org.apache.doris.thrift.TInvertedIndexFileStorageFormat.V1;
+                if (isPartialUpdate() || hasInvertedIndexV1 || 
Config.isCloudMode()) {
+                    isEnableMemtableOnSinkNode = false;
+                }
+
                 // Generate loading task and init the plan of task
                 LoadLoadingTask task = createTask(db, table, brokerFileGroups,
                         isEnableMemtableOnSinkNode, batchSize, aggKey, 
attachment);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadLoadingTask.java 
b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadLoadingTask.java
index 03127625cde..2e9acff237b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadLoadingTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadLoadingTask.java
@@ -171,7 +171,9 @@ public class LoadLoadingTask extends LoadTask {
         curCoordinator.setExecMemoryLimit(execMemLimit);
 
         curCoordinator.setMemTableOnSinkNode(enableMemTableOnSinkNode);
-        curCoordinator.setBatchSize(batchSize);
+        if (enableMemTableOnSinkNode) {
+            curCoordinator.setBatchSize(batchSize);
+        }
 
         long leftTimeMs = getLeftTimeMs();
         if (leftTimeMs <= 0) {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/load/loadv2/LoadLoadingTaskTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/load/loadv2/LoadLoadingTaskTest.java
new file mode 100644
index 00000000000..d82cb64c026
--- /dev/null
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/load/loadv2/LoadLoadingTaskTest.java
@@ -0,0 +1,57 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.load.loadv2;
+
+import org.apache.doris.thrift.TQueryOptions;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class LoadLoadingTaskTest {
+
+    /**
+     * Test the batch size setting logic in LoadLoadingTask.executeOnce().
+     * When enableMemTableOnSinkNode = true, setBatchSize() should be called.
+     * When enableMemTableOnSinkNode = false, setBatchSize() should NOT be 
called.
+     */
+    @Test
+    public void testBatchSizeSettingLogic() {
+        int brokerLoadBatchSize = 16352;
+
+        // Case 1: enableMemTableOnSinkNode = true, setBatchSize should be 
called
+        TQueryOptions queryOptionsWithMemTable = new TQueryOptions();
+        boolean enableMemTableOnSinkNode1 = true;
+        
queryOptionsWithMemTable.setEnableMemtableOnSinkNode(enableMemTableOnSinkNode1);
+        if (enableMemTableOnSinkNode1) {
+            queryOptionsWithMemTable.setBatchSize(brokerLoadBatchSize);
+        }
+        
Assert.assertTrue(queryOptionsWithMemTable.isEnableMemtableOnSinkNode());
+        Assert.assertEquals(brokerLoadBatchSize, 
queryOptionsWithMemTable.getBatchSize());
+
+        // Case 2: enableMemTableOnSinkNode = false, setBatchSize should NOT 
be called
+        TQueryOptions queryOptionsWithoutMemTable = new TQueryOptions();
+        boolean enableMemTableOnSinkNode2 = false;
+        
queryOptionsWithoutMemTable.setEnableMemtableOnSinkNode(enableMemTableOnSinkNode2);
+        if (enableMemTableOnSinkNode2) {
+            queryOptionsWithoutMemTable.setBatchSize(brokerLoadBatchSize);
+        }
+        
Assert.assertFalse(queryOptionsWithoutMemTable.isEnableMemtableOnSinkNode());
+        // batch_size should remain 0 (unset), BE will use DEFAULT_BATCH_SIZE 
(4062)
+        Assert.assertEquals(0, queryOptionsWithoutMemTable.getBatchSize());
+    }
+}


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

Reply via email to