From 0f1c0376186de6446d595be7bb445ed6b71ae499 Mon Sep 17 00:00:00 2001 From: Inigo Goiri Date: Thu, 19 Oct 2017 18:08:45 -0700 Subject: [PATCH] HDFS-12620. Backporting HDFS-10467 to branch-2. Contributed by Inigo Goiri. --- .../apache/hadoop/hdfs/server/federation/MockResolver.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/MockResolver.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/MockResolver.java index a48155324b..151d73151e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/MockResolver.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/federation/MockResolver.java @@ -264,7 +264,10 @@ public class MockResolver @Override public PathLocation getDestinationForPath(String path) throws IOException { List remoteLocations = new LinkedList<>(); - for (String key : this.locations.keySet()) { + // We go from the leaves to the root + List keys = new ArrayList<>(this.locations.keySet()); + Collections.sort(keys, Collections.reverseOrder()); + for (String key : keys) { if (path.startsWith(key)) { for (RemoteLocation location : this.locations.get(key)) { String finalPath = location.getDest() + path.substring(key.length());