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 2f928256feb88488f1c1010da7a682ed71cb4253 Author: Brahma Reddy Battula <[email protected]> AuthorDate: Mon Jan 28 09:03:32 2019 +0530 HDFS-14224. RBF: NPE in getContentSummary() for getEcPolicy() in case of multiple destinations. Contributed by Ayush Saxena. --- .../server/federation/router/RouterClientProtocol.java | 7 +++++++ .../federation/router/TestRouterRpcMultiDestination.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java index 09f7e5f..485c103 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java @@ -1629,6 +1629,7 @@ public class RouterClientProtocol implements ClientProtocol { long quota = 0; long spaceConsumed = 0; long spaceQuota = 0; + String ecPolicy = ""; for (ContentSummary summary : summaries) { length += summary.getLength(); @@ -1637,6 +1638,11 @@ public class RouterClientProtocol implements ClientProtocol { quota += summary.getQuota(); spaceConsumed += summary.getSpaceConsumed(); spaceQuota += summary.getSpaceQuota(); + // We return from the first response as we assume that the EC policy + // of each sub-cluster is same. + if (ecPolicy.isEmpty()) { + ecPolicy = summary.getErasureCodingPolicy(); + } } ContentSummary ret = new ContentSummary.Builder() @@ -1646,6 +1652,7 @@ public class RouterClientProtocol implements ClientProtocol { .quota(quota) .spaceConsumed(spaceConsumed) .spaceQuota(spaceQuota) + .erasureCodingPolicy(ecPolicy) .build(); return ret; } diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java index 3101748..3d941bb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterRpcMultiDestination.java @@ -41,6 +41,7 @@ import java.util.TreeSet; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.protocol.ClientProtocol; import org.apache.hadoop.hdfs.protocol.DirectoryListing; import org.apache.hadoop.hdfs.protocol.HdfsFileStatus; @@ -230,6 +231,21 @@ public class TestRouterRpcMultiDestination extends TestRouterRpc { } @Test + public void testGetContentSummaryEc() throws Exception { + DistributedFileSystem routerDFS = + (DistributedFileSystem) getRouterFileSystem(); + Path dir = new Path("/"); + String expectedECPolicy = "RS-6-3-1024k"; + try { + routerDFS.setErasureCodingPolicy(dir, expectedECPolicy); + assertEquals(expectedECPolicy, + routerDFS.getContentSummary(dir).getErasureCodingPolicy()); + } finally { + routerDFS.unsetErasureCodingPolicy(dir); + } + } + + @Test public void testSubclusterDown() throws Exception { final int totalFiles = 6; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
