From a9e6681edf17895fdb3530a8d75449b2d3207a1b Mon Sep 17 00:00:00 2001 From: Zhe Zhang Date: Mon, 21 Sep 2015 13:24:02 -0700 Subject: [PATCH] HDFS-9091. Erasure Coding: Provide DistributedFilesystem API to getAllErasureCodingPolicies. Contributed by Rakesh R. Change-Id: Id30a1ce9e2ce676d00a9220a2d3f14b8d9f00527 --- .../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 3 +++ .../apache/hadoop/hdfs/DistributedFileSystem.java | 11 +++++++++++ .../hadoop/hdfs/TestErasureCodingPolicies.java | 15 +++++++++++++++ 3 files changed, 29 insertions(+) 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 db63d53394..0e21d223e2 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 903f763d72..ac927ef9c0 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 ErasureCodingPolicy next(final FileSystem fs, final Path p) } }.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 ed41f7aee6..0ababed63e 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.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 void testCreationErasureCodingZoneWithInvalidPolicy() } } + @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()); + } }