diff options
author | Arpit Agarwal <arp@apache.org> | 2018-05-16 11:28:39 -0700 |
---|---|---|
committer | Arpit Agarwal <arp@apache.org> | 2018-05-16 11:28:39 -0700 |
commit | 0fc988e6a3dc6b435cbeea680549c06ef6147e3f (patch) | |
tree | 7c0dd5093f1b964f101666e81ed8b930f3a98e4a /hadoop-hdfs-project/hadoop-hdfs/src/main | |
parent | 55d5549087183cb9c8d805e33267acabe9537667 (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.java | 19 |
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) { |