You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by in...@apache.org on 2019/08/23 21:54:09 UTC
[hadoop] branch trunk updated: HDFS-14766. RBF:
MountTableStoreImpl#getMountTableEntries returns extra entry. Contributed
by Chen Zhang.
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 0b79675 HDFS-14766. RBF: MountTableStoreImpl#getMountTableEntries returns extra entry. Contributed by Chen Zhang.
0b79675 is described below
commit 0b796754b9d746c0389782f1a5e3ee9ef673e54c
Author: Inigo Goiri <in...@apache.org>
AuthorDate: Fri Aug 23 14:53:57 2019 -0700
HDFS-14766. RBF: MountTableStoreImpl#getMountTableEntries returns extra entry. Contributed by Chen Zhang.
---
.../federation/store/impl/MountTableStoreImpl.java | 3 +-
.../federation/router/TestRouterAdminCLI.java | 35 ++++++++++++++++++++++
2 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/impl/MountTableStoreImpl.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/impl/MountTableStoreImpl.java
index 8761038..8682a3d 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/impl/MountTableStoreImpl.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/impl/MountTableStoreImpl.java
@@ -25,6 +25,7 @@ import java.util.List;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.fs.permission.FsAction;
+import org.apache.hadoop.hdfs.server.federation.router.FederationUtil;
import org.apache.hadoop.hdfs.server.federation.router.RouterAdminServer;
import org.apache.hadoop.hdfs.server.federation.router.RouterPermissionChecker;
import org.apache.hadoop.hdfs.server.federation.store.MountTableStore;
@@ -139,7 +140,7 @@ public class MountTableStoreImpl extends MountTableStore {
while (it.hasNext()) {
MountTable record = it.next();
String srcPath = record.getSourcePath();
- if (!srcPath.startsWith(reqSrcPath)) {
+ if (!FederationUtil.isParentEntry(srcPath, reqSrcPath)) {
it.remove();
} else if (pc != null) {
// do the READ permission check
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
index 731d5d4..6de74c2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
@@ -333,6 +333,39 @@ public class TestRouterAdminCLI {
}
@Test
+ public void testListNestedMountTable() throws Exception {
+ String dir1 = "/test-ls";
+ String dir2 = "/test-ls-longger";
+ String[] nsIdList = {"ns0", "ns1", "ns2", "ns3", "ns3"};
+ String[] sourceList =
+ {dir1, dir1 + "/subdir1", dir2, dir2 + "/subdir1", dir2 + "/subdir2"};
+ String[] destList =
+ {"/test-ls", "/test-ls/subdir1", "/ls", "/ls/subdir1", "/ls/subdir2"};
+ for (int i = 0; i < nsIdList.length; i++) {
+ String[] argv =
+ new String[] {"-add", sourceList[i], nsIdList[i], destList[i]};
+ assertEquals(0, ToolRunner.run(admin, argv));
+ }
+
+ // prepare for test
+ System.setOut(new PrintStream(out));
+ stateStore.loadCache(MountTableStoreImpl.class, true);
+
+ // Test ls dir1
+ String[] argv = new String[] {"-ls", dir1};
+ assertEquals(0, ToolRunner.run(admin, argv));
+ String outStr = out.toString();
+ assertTrue(out.toString().contains(dir1 + "/subdir1"));
+ assertFalse(out.toString().contains(dir2));
+
+ // Test ls dir2
+ argv = new String[] {"-ls", dir2};
+ assertEquals(0, ToolRunner.run(admin, argv));
+ assertTrue(out.toString().contains(dir2 + "/subdir1"));
+ assertTrue(out.toString().contains(dir2 + "/subdir2"));
+ }
+
+ @Test
public void testRemoveMountTable() throws Exception {
String nsId = "ns0";
String src = "/test-rmmounttable";
@@ -699,6 +732,8 @@ public class TestRouterAdminCLI {
assertEquals(0, ToolRunner.run(admin, argv));
stateStore.loadCache(MountTableStoreImpl.class, true);
+
+ getRequest = GetMountTableEntriesRequest.newInstance("/");
getResponse =
client.getMountTableManager().getMountTableEntries(getRequest);
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org