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 he...@apache.org on 2020/08/26 07:36:26 UTC
[hadoop] branch branch-3.3 updated: HDFS-15536. RBF: Clear Quota in
Router was not consistent.
This is an automated email from the ASF dual-hosted git repository.
hemanthboyina pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.3 by this push:
new ac0a377 HDFS-15536. RBF: Clear Quota in Router was not consistent.
ac0a377 is described below
commit ac0a37777991a9c66720ab80a05bec1543420e69
Author: hemanthboyina <he...@apache.org>
AuthorDate: Wed Aug 26 13:03:08 2020 +0530
HDFS-15536. RBF: Clear Quota in Router was not consistent.
(cherry picked from commit 6e618b6a7e3b7cb6459091945c8eb07fddc0034e)
---
.../federation/store/records/MountTable.java | 5 +++
...erRPCMultipleDestinationMountTableResolver.java | 49 ++++++++++++++++++++++
2 files changed, 54 insertions(+)
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/MountTable.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/MountTable.java
index d1351a3..5d7d5c2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/MountTable.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/store/records/MountTable.java
@@ -430,6 +430,8 @@ public abstract class MountTable extends BaseRecord {
.append(this.isReadOnly())
.append(this.getDestOrder())
.append(this.isFaultTolerant())
+ .append(this.getQuota().getQuota())
+ .append(this.getQuota().getSpaceQuota())
.toHashCode();
}
@@ -443,6 +445,9 @@ public abstract class MountTable extends BaseRecord {
.append(this.isReadOnly(), other.isReadOnly())
.append(this.getDestOrder(), other.getDestOrder())
.append(this.isFaultTolerant(), other.isFaultTolerant())
+ .append(this.getQuota().getQuota(), other.getQuota().getQuota())
+ .append(this.getQuota().getSpaceQuota(),
+ other.getQuota().getSpaceQuota())
.isEquals();
}
return false;
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRPCMultipleDestinationMountTableResolver.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRPCMultipleDestinationMountTableResolver.java
index d00b93c..bcab7bb 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRPCMultipleDestinationMountTableResolver.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRPCMultipleDestinationMountTableResolver.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertTrue;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -34,6 +35,7 @@ import java.util.Map;
import java.util.TreeSet;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.ContentSummary;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Options.Rename;
@@ -56,7 +58,9 @@ import org.apache.hadoop.hdfs.server.federation.store.protocol.GetDestinationReq
import org.apache.hadoop.hdfs.server.federation.store.protocol.GetDestinationResponse;
import org.apache.hadoop.hdfs.server.federation.store.protocol.RemoveMountTableEntryRequest;
import org.apache.hadoop.hdfs.server.federation.store.records.MountTable;
+import org.apache.hadoop.hdfs.tools.federation.RouterAdmin;
import org.apache.hadoop.test.LambdaTestUtils;
+import org.apache.hadoop.util.ToolRunner;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -509,6 +513,43 @@ public class TestRouterRPCMultipleDestinationMountTableResolver {
verifyRenameOnMultiDestDirectories(DestinationOrder.SPACE, true);
}
+ @Test
+ public void testClearQuota() throws Exception {
+ long nsQuota = 5;
+ long ssQuota = 100;
+ Path path = new Path("/router_test");
+ nnFs0.mkdirs(path);
+ nnFs1.mkdirs(path);
+ MountTable addEntry = MountTable.newInstance("/router_test",
+ Collections.singletonMap("ns0", "/router_test"));
+ addEntry.setQuota(new RouterQuotaUsage.Builder().build());
+ assertTrue(addMountTable(addEntry));
+ RouterQuotaUpdateService updateService =
+ routerContext.getRouter().getQuotaCacheUpdateService();
+ updateService.periodicInvoke();
+
+ //set quota and validate the quota
+ RouterAdmin admin = getRouterAdmin();
+ String[] argv = new String[] {"-setQuota", path.toString(), "-nsQuota",
+ String.valueOf(nsQuota), "-ssQuota", String.valueOf(ssQuota)};
+ assertEquals(0, ToolRunner.run(admin, argv));
+ updateService.periodicInvoke();
+ resolver.loadCache(true);
+ ContentSummary cs = routerFs.getContentSummary(path);
+ assertEquals(nsQuota, cs.getQuota());
+ assertEquals(ssQuota, cs.getSpaceQuota());
+
+ //clear quota and validate the quota
+ argv = new String[] {"-clrQuota", path.toString()};
+ assertEquals(0, ToolRunner.run(admin, argv));
+ updateService.periodicInvoke();
+ resolver.loadCache(true);
+ //quota should be cleared
+ ContentSummary cs1 = routerFs.getContentSummary(path);
+ assertEquals(-1, cs1.getQuota());
+ assertEquals(-1, cs1.getSpaceQuota());
+ }
+
/**
* Test to verify rename operation on directories in case of multiple
* destinations.
@@ -690,4 +731,12 @@ public class TestRouterRPCMultipleDestinationMountTableResolver {
return null;
}
+ private RouterAdmin getRouterAdmin() {
+ Router router = routerContext.getRouter();
+ Configuration configuration = routerContext.getConf();
+ InetSocketAddress routerSocket = router.getAdminServerAddress();
+ configuration.setSocketAddr(RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_KEY,
+ routerSocket);
+ return new RouterAdmin(configuration);
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org