This is an automated email from the ASF dual-hosted git repository.
keepromise pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new 7f2f7149788 HDFS-17871. Improve performance of findDeepest in RBF
(#8179). Contributed by XorSum.
7f2f7149788 is described below
commit 7f2f7149788005f1dd975ed427d5626abc5145e3
Author: bkhan <[email protected]>
AuthorDate: Tue Jan 20 18:09:58 2026 +0800
HDFS-17871. Improve performance of findDeepest in RBF (#8179). Contributed
by XorSum.
Reviewed-by: Jian Zhang <[email protected]>
---
.../federation/resolver/MountTableResolver.java | 23 +++++++++++++++++-----
.../resolver/TestMountTableResolver.java | 3 +++
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MountTableResolver.java
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MountTableResolver.java
index a5ca8acfb4b..03c343c36ec 100644
---
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MountTableResolver.java
+++
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MountTableResolver.java
@@ -629,14 +629,27 @@ public String getDefaultNamespace() {
private MountTable findDeepest(final String path) {
readLock.lock();
try {
- Entry<String, MountTable> entry = this.tree.floorEntry(path);
- while (entry != null && !isParentEntry(path, entry.getKey())) {
- entry = this.tree.lowerEntry(entry.getKey());
+ Entry<String, MountTable> floorEntry = this.tree.floorEntry(path);
+ if (floorEntry != null && isParentEntry(path, floorEntry.getKey())) {
+ return floorEntry.getValue();
}
- if (entry == null) {
+ if ("".equals(path)) {
return null;
}
- return entry.getValue();
+ MountTable mountTable;
+ Path currentPath = new Path(path);
+ while (true) {
+ mountTable = tree.getOrDefault(currentPath.toUri().getPath(), null);
+ if (mountTable != null) {
+ break;
+ }
+ if (currentPath.isRoot()) {
+ break;
+ } else {
+ currentPath = currentPath.getParent();
+ }
+ }
+ return mountTable;
} finally {
readLock.unlock();
}
diff --git
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/resolver/TestMountTableResolver.java
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/resolver/TestMountTableResolver.java
index 6fc19aa0338..9bbce9ac28a 100644
---
a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/resolver/TestMountTableResolver.java
+++
b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/resolver/TestMountTableResolver.java
@@ -265,6 +265,9 @@ public void testGetMountPoint() throws IOException {
mtEntry = mountTable.getMountPoint("/user/a1");
assertEquals("/user", mtEntry.getSourcePath());
+
+ mtEntry = mountTable.getMountPoint("");
+ assertNull(mtEntry);
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]