[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
This commit is contained in:
Mingyu Chen
2024-08-07 14:09:06 +08:00
committed by GitHub
parent f9788b4ca5
commit 843afccdf9
2 changed files with 8 additions and 0 deletions

View File

@ -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 class BeSelectionPolicy {
} 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;
}

View File

@ -21,6 +21,7 @@ import org.apache.doris.catalog.DiskInfo;
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 class SystemInfoServiceTest {
@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());