diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/order/AvailableSpaceResolver.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/order/AvailableSpaceResolver.java index 591ac5b3c37ca..df4c765bd6133 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/order/AvailableSpaceResolver.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/order/AvailableSpaceResolver.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hdfs.server.federation.resolver.PathLocation; import org.apache.hadoop.hdfs.server.federation.resolver.order.AvailableSpaceResolver.SubclusterAvailableSpace; import org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys; +import org.apache.hadoop.hdfs.server.federation.resolver.RemoteLocation; import org.apache.hadoop.hdfs.server.federation.router.Router; import org.apache.hadoop.hdfs.server.federation.store.MembershipStore; import org.apache.hadoop.hdfs.server.federation.store.protocol.GetNamenodeRegistrationsRequest; @@ -116,8 +117,10 @@ protected Map getSubclusterInfo( protected String chooseFirstNamespace(String path, PathLocation loc) { Map subclusterInfo = getSubclusterMapping(); - List subclusterList = new LinkedList<>( - subclusterInfo.values()); + List subclusterList = new LinkedList<>(); + for(RemoteLocation remoteLocation : loc.getDestinations()) { + subclusterList.add(subclusterInfo.get(remoteLocation.getNameserviceId())); + } Collections.sort(subclusterList, comparator); return subclusterList.size() > 0 ? subclusterList.get(0).getNameserviceId()