From 6ea0907b098059ffa6c8f843d25b499cb886654c Mon Sep 17 00:00:00 2001 From: meiyi Date: Fri, 20 Mar 2026 15:38:42 +0800 Subject: [PATCH] [fix](group commit) group commit select backend should consider isLoadAvailable --- .../apache/doris/load/GroupCommitManager.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/GroupCommitManager.java b/fe/fe-core/src/main/java/org/apache/doris/load/GroupCommitManager.java index a2234c5366afaf..bea5cd03c7dba0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/GroupCommitManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/GroupCommitManager.java @@ -357,10 +357,7 @@ private Long getCachedBackend(String cluster, long tableId) { return null; } Backend backend = Env.getCurrentSystemInfo().getBackend(backendId); - if (backend != null && backend.isAlive() && !backend.isDecommissioned() - && (!Config.isCloudMode() || !backend.isDecommissioning()) - && (!Config.isCloudMode() || cluster == null - || cluster.equals(backend.getCloudClusterName()))) { + if (isBackendAvailable(backend, cluster)) { return backend.getId(); } else { tableToBeMap.remove(encode(cluster, tableId)); @@ -372,13 +369,26 @@ private Long getCachedBackend(String cluster, long tableId) { return null; } + private boolean isBackendAvailable(Backend backend, String cluster) { + if (backend == null || !backend.isAlive() || backend.isDecommissioned() || !backend.isLoadAvailable()) { + return false; + } + if (!Config.isCloudMode()) { + return true; + } + // for cloud mode + if (backend.isDecommissioning()) { + return false; + } + return cluster == null || cluster.equals(backend.getCloudClusterName()); + } + @Nullable private Long getRandomBackend(String cluster, long tableId, List backends) { OlapTable table = (OlapTable) Env.getCurrentEnv().getInternalCatalog().getTableByTableId(tableId); Collections.shuffle(backends); for (Backend backend : backends) { - if (backend.isAlive() && !backend.isDecommissioned() && (!Config.isCloudMode() - || !backend.isDecommissioning())) { + if (isBackendAvailable(backend, cluster)) { tableToBeMap.put(encode(cluster, tableId), backend.getId()); tableToPressureMap.put(tableId, new SlidingWindowCounter(table.getGroupCommitIntervalMs() / 1000 + 1));