From ae76b59f2fb2f47e4297f5e40d71528c858052b4 Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Fri, 21 Apr 2023 12:35:45 +0800 Subject: [PATCH] [fix](external table) Use FederationBackendPolicy in Coordinator for ExternalScanNode #18860 --- .../doris/planner/external/FederationBackendPolicy.java | 4 ++++ .../src/main/java/org/apache/doris/qe/Coordinator.java | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/external/FederationBackendPolicy.java b/fe/fe-core/src/main/java/org/apache/doris/planner/external/FederationBackendPolicy.java index c67f7a50bf..aee9252e2e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/external/FederationBackendPolicy.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/external/FederationBackendPolicy.java @@ -81,4 +81,8 @@ public class FederationBackendPolicy { public int numBackends() { return backends.size(); } + + public List getBackends() { + return backends; + } } 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 0743a13304..af0801e0ad 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 @@ -62,6 +62,7 @@ import org.apache.doris.planner.ScanNode; import org.apache.doris.planner.SetOperationNode; import org.apache.doris.planner.UnionNode; import org.apache.doris.planner.external.ExternalScanNode; +import org.apache.doris.planner.external.FederationBackendPolicy; import org.apache.doris.proto.InternalService; import org.apache.doris.proto.InternalService.PExecPlanFragmentResult; import org.apache.doris.proto.InternalService.PExecPlanFragmentStartRequest; @@ -2035,8 +2036,9 @@ public class Coordinator { FragmentScanRangeAssignment assignment, Map assignedBytesPerHost, Map replicaNumPerHost) throws Exception { - Collection aliveBEs = idToBackend.values().stream().filter(SimpleScheduler::isAvailable) - .collect(Collectors.toList()); + FederationBackendPolicy federationBackendPolicy = new FederationBackendPolicy(); + federationBackendPolicy.init(); + Collection aliveBEs = federationBackendPolicy.getBackends(); if (aliveBEs.isEmpty()) { throw new UserException("No available backends"); }