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/03/03 18:37:09 UTC
[hadoop] 30/45: HDFS-14209. RBF: setQuota() through router is
working for only the mount Points under the Source column in MountTable.
Contributed by Shubham Dewan.
This is an automated email from the ASF dual-hosted git repository.
inigoiri pushed a commit to branch HDFS-13891
in repository https://gitbox.apache.org/repos/asf/hadoop.git
commit b8fb3df548799a924ae80b248240fae936c1d8c4
Author: Yiqun Lin <yq...@apache.org>
AuthorDate: Wed Jan 23 22:59:43 2019 +0800
HDFS-14209. RBF: setQuota() through router is working for only the mount Points under the Source column in MountTable. Contributed by Shubham Dewan.
---
.../hdfs/server/federation/router/Quota.java | 7 ++++-
.../server/federation/router/TestRouterQuota.java | 32 +++++++++++++++++++++-
2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Quota.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Quota.java
index cfb538f..a6f5bab 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Quota.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Quota.java
@@ -216,6 +216,11 @@ public class Quota {
locations.addAll(rpcServer.getLocationsForPath(childPath, true, false));
}
}
- return locations;
+ if (locations.size() >= 1) {
+ return locations;
+ } else {
+ locations.addAll(rpcServer.getLocationsForPath(path, true, false));
+ return locations;
+ }
}
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterQuota.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterQuota.java
index 656b401..034023c 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterQuota.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterQuota.java
@@ -755,4 +755,34 @@ public class TestRouterQuota {
assertEquals(HdfsConstants.QUOTA_RESET, subClusterQuota.getQuota());
assertEquals(HdfsConstants.QUOTA_RESET, subClusterQuota.getSpaceQuota());
}
-}
\ No newline at end of file
+
+ @Test
+ public void testSetQuotaNotMountTable() throws Exception {
+ long nsQuota = 5;
+ long ssQuota = 100;
+ final FileSystem nnFs1 = nnContext1.getFileSystem();
+
+ // setQuota should run for any directory
+ MountTable mountTable1 = MountTable.newInstance("/setquotanmt",
+ Collections.singletonMap("ns0", "/testdir16"));
+
+ addMountTable(mountTable1);
+
+ // Add a directory not present in mount table.
+ nnFs1.mkdirs(new Path("/testdir16/testdir17"));
+
+ routerContext.getRouter().getRpcServer().setQuota("/setquotanmt/testdir17",
+ nsQuota, ssQuota, null);
+
+ RouterQuotaUpdateService updateService = routerContext.getRouter()
+ .getQuotaCacheUpdateService();
+ // ensure setQuota RPC call was invoked
+ updateService.periodicInvoke();
+
+ ClientProtocol client1 = nnContext1.getClient().getNamenode();
+ final QuotaUsage quota1 = client1.getQuotaUsage("/testdir16/testdir17");
+
+ assertEquals(nsQuota, quota1.getQuota());
+ assertEquals(ssQuota, quota1.getSpaceQuota());
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org