This is an automated email from the ASF dual-hosted git repository. inigoiri 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 422bf3b24c8 HDFS-16973. RBF: MountTableResolver cache size lookup should take read lock (#5533) 422bf3b24c8 is described below commit 422bf3b24c82803cb0e8ed25fa0b12b5f5cccc1b Author: Viraj Jasani <vjas...@apache.org> AuthorDate: Wed Apr 5 14:06:38 2023 -0700 HDFS-16973. RBF: MountTableResolver cache size lookup should take read lock (#5533) --- .../hdfs/server/federation/resolver/MountTableResolver.java | 13 +++++++++---- .../server/federation/resolver/TestMountTableResolver.java | 10 ++++++++++ 2 files changed, 19 insertions(+), 4 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 4b21ec0aa63..adb0f91d042 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 @@ -678,11 +678,16 @@ public class MountTableResolver * @return Size of the cache. * @throws IOException If the cache is not initialized. */ - protected long getCacheSize() throws IOException{ - if (this.locationCache != null) { - return this.locationCache.size(); + protected long getCacheSize() throws IOException { + this.readLock.lock(); + try { + if (this.locationCache != null) { + return this.locationCache.size(); + } + throw new IOException("localCache is null"); + } finally { + this.readLock.unlock(); } - throw new IOException("localCache is null"); } @VisibleForTesting 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 15d3caa5e4e..998b79782de 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 @@ -552,6 +552,16 @@ public class TestMountTableResolver { assertEquals(100000, mountTable.getMountPoints("/").size()); assertEquals(100000, mountTable.getMounts("/").size()); + // test concurrency for mount table cache size when it gets updated frequently + for (int i = 0; i < 20; i++) { + mountTable.getDestinationForPath("/" + i); + if (i >= 10) { + assertEquals(TEST_MAX_CACHE_SIZE, mountTable.getCacheSize()); + } else { + assertEquals(i + 1, mountTable.getCacheSize()); + } + } + assertEquals(TEST_MAX_CACHE_SIZE, mountTable.getCacheSize()); // Add 1000 entries in deep list mountTable.refreshEntries(emptyList); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org