From 843afccdf9097ff628e82007cb1fce99dc6ac61e Mon Sep 17 00:00:00 2001 From: Mingyu Chen Date: Wed, 7 Aug 2024 14:09:06 +0800 Subject: [PATCH] [fix](catalog) remove backend in black list from candidate backends for external table (#38984) When select backends for external table's query, skip the backends in black list --- .../java/org/apache/doris/system/BeSelectionPolicy.java | 6 ++++++ .../java/org/apache/doris/system/SystemInfoServiceTest.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/system/BeSelectionPolicy.java b/fe/fe-core/src/main/java/org/apache/doris/system/BeSelectionPolicy.java index 8c7c1d816a894a..8c823eb75ee4d2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/system/BeSelectionPolicy.java +++ b/fe/fe-core/src/main/java/org/apache/doris/system/BeSelectionPolicy.java @@ -17,6 +17,8 @@ package org.apache.doris.system; +import org.apache.doris.common.Config; +import org.apache.doris.qe.SimpleScheduler; import org.apache.doris.resource.Tag; import org.apache.doris.thrift.TStorageMedium; @@ -209,6 +211,10 @@ public List getCandidateBackends(ImmutableCollection backends) } else { candidates.addAll(filterBackends); } + // filter out backends in black list + if (!Config.disable_backend_black_list) { + candidates = candidates.stream().filter(b -> SimpleScheduler.isAvailable(b)).collect(Collectors.toList()); + } Collections.shuffle(candidates); return candidates; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/system/SystemInfoServiceTest.java b/fe/fe-core/src/test/java/org/apache/doris/system/SystemInfoServiceTest.java index eb1f33c288902f..d14cdd2a865e05 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/system/SystemInfoServiceTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/system/SystemInfoServiceTest.java @@ -21,6 +21,7 @@ import org.apache.doris.catalog.Env; import org.apache.doris.catalog.ReplicaAllocation; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.Config; import org.apache.doris.common.FeMetaVersion; import org.apache.doris.common.Pair; import org.apache.doris.meta.MetaContext; @@ -133,6 +134,7 @@ public void testBackendHbResponseSerialization() throws IOException { @Test public void testSelectBackendIdsByPolicy() throws Exception { + Config.disable_backend_black_list = true; // 1. no backend BeSelectionPolicy policy = new BeSelectionPolicy.Builder().needLoadAvailable().build(); Assert.assertEquals(0, infoService.selectBackendIdsByPolicy(policy, 1).size());