HDFS-9091. Erasure Coding: Provide DistributedFilesystem API to getAllErasureCodingPolicies. Contributed by Rakesh R.
Change-Id: Id30a1ce9e2ce676d00a9220a2d3f14b8d9f00527 Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a9e6681e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a9e6681e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a9e6681e Branch: refs/heads/HDFS-7240 Commit: a9e6681edf17895fdb3530a8d75449b2d3207a1b Parents: b762199 Author: Zhe Zhang <zhezh...@cloudera.com> Authored: Mon Sep 21 13:24:02 2015 -0700 Committer: Zhe Zhang <zhezh...@cloudera.com> Committed: Mon Sep 21 13:24:02 2015 -0700 ---------------------------------------------------------------------- .../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 3 +++ .../apache/hadoop/hdfs/DistributedFileSystem.java | 11 +++++++++++ .../hadoop/hdfs/TestErasureCodingPolicies.java | 15 +++++++++++++++ 3 files changed, 29 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a9e6681e/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt index db63d53..0e21d22 100755 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt @@ -441,3 +441,6 @@ HDFS-9113. ErasureCodingWorker#processErasureCodingTasks should not fail to process remaining tasks due to one invalid ECTask (umamahesh) + + HDFS-9091. Erasure Coding: Provide DistributedFilesystem API to + getAllErasureCodingPolicies. (Rakesh R via zhz) http://git-wip-us.apache.org/repos/asf/hadoop/blob/a9e6681e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java index 903f763..ac927ef 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java @@ -2324,4 +2324,15 @@ public class DistributedFileSystem extends FileSystem { } }.resolve(this, absF); } + + /** + * Retrieve all the erasure coding policies supported by this file system. + * + * @return all erasure coding policies supported by this file system. + * @throws IOException + */ + public Collection<ErasureCodingPolicy> getAllErasureCodingPolicies() + throws IOException { + return Arrays.asList(dfs.getErasureCodingPolicies()); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/a9e6681e/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingPolicies.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingPolicies.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingPolicies.java index ed41f7a..0ababed 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingPolicies.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingPolicies.java @@ -32,6 +32,7 @@ import org.junit.Before; import org.junit.Test; import java.io.IOException; +import java.util.Collection; import static org.apache.hadoop.test.GenericTestUtils.assertExceptionContains; import static org.junit.Assert.*; @@ -231,4 +232,18 @@ public class TestErasureCodingPolicies { } } + @Test + public void testGetAllErasureCodingPolicies() throws Exception { + ErasureCodingPolicy[] sysECPolicies = ErasureCodingPolicyManager + .getSystemPolices(); + assertTrue("System ecPolicies should be of only 1 for now", + sysECPolicies.length == 1); + + Collection<ErasureCodingPolicy> allECPolicies = fs + .getAllErasureCodingPolicies(); + assertTrue("All ecPolicies should be of only 1 for now", + allECPolicies.size() == 1); + assertEquals("Erasure coding policy mismatches", + sysECPolicies[0], allECPolicies.iterator().next()); + } }