summaryrefslogtreecommitdiff
path: root/hadoop-hdfs-project/hadoop-hdfs/src/main
diff options
context:
space:
mode:
authorArpit Agarwal <arp@apache.org>2018-05-16 11:28:39 -0700
committerArpit Agarwal <arp@apache.org>2018-05-16 11:28:39 -0700
commit0fc988e6a3dc6b435cbeea680549c06ef6147e3f (patch)
tree7c0dd5093f1b964f101666e81ed8b930f3a98e4a /hadoop-hdfs-project/hadoop-hdfs/src/main
parent55d5549087183cb9c8d805e33267acabe9537667 (diff)
HDFS-13512. WebHdfs getFileStatus doesn't return ecPolicy. Contributed by Ajay Kumar.
Diffstat (limited to 'hadoop-hdfs-project/hadoop-hdfs/src/main')
-rw-r--r--hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java
index 43a252b1c3..5c810bf0c2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/web/JsonUtil.java
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.hdfs.web;
+import com.google.common.collect.ImmutableMap;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.ContentSummary;
import org.apache.hadoop.fs.FileChecksum;
@@ -135,7 +136,10 @@ public class JsonUtil {
if (status.isErasureCoded()) {
m.put("ecBit", true);
if (status.getErasureCodingPolicy() != null) {
+ // to maintain backward comparability
m.put("ecPolicy", status.getErasureCodingPolicy().getName());
+ // to re-construct HdfsFileStatus object via WebHdfs
+ m.put("ecPolicyObj", getEcPolicyAsMap(status.getErasureCodingPolicy()));
}
}
if (status.isSnapshotEnabled()) {
@@ -152,6 +156,21 @@ public class JsonUtil {
return m;
}
+ private static Map<String, Object> getEcPolicyAsMap(
+ final ErasureCodingPolicy ecPolicy) {
+ /** Convert an ErasureCodingPolicy to a map. */
+ ImmutableMap.Builder<String, Object> builder = ImmutableMap.builder();
+ builder.put("name", ecPolicy.getName())
+ .put("cellSize", ecPolicy.getCellSize())
+ .put("numDataUnits", ecPolicy.getNumDataUnits())
+ .put("numParityUnits", ecPolicy.getNumParityUnits())
+ .put("codecName", ecPolicy.getCodecName())
+ .put("id", ecPolicy.getId())
+ .put("extraOptions", ecPolicy.getSchema().getExtraOptions());
+ return builder.build();
+
+ }
+
/** Convert an ExtendedBlock to a Json map. */
private static Map<String, Object> toJsonMap(final ExtendedBlock extendedblock) {
if (extendedblock == null) {