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 db63d533949..0e21d223e2c 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) 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 903f763d720..ac927ef9c02 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 getAllErasureCodingPolicies() + throws IOException { + return Arrays.asList(dfs.getErasureCodingPolicies()); + } } 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 ed41f7aee67..0ababed63eb 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 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()); + } }