Repository: hadoop Updated Branches: refs/heads/trunk be7237224 -> df857f0d1
HDFS-10975. fsck -list-corruptfileblocks does not report corrupt EC files. Contributed by Takanobu Asanuma. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/df857f0d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/df857f0d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/df857f0d Branch: refs/heads/trunk Commit: df857f0d10bda9fbb9c3f6ec77aba0cf46fe3631 Parents: be72372 Author: Wei-Chiu Chuang <weic...@apache.org> Authored: Fri Oct 21 15:43:12 2016 -0700 Committer: Wei-Chiu Chuang <weic...@apache.org> Committed: Fri Oct 21 15:43:12 2016 -0700 ---------------------------------------------------------------------- .../hadoop/hdfs/server/namenode/NamenodeFsck.java | 15 ++++++++------- .../apache/hadoop/hdfs/server/namenode/TestFsck.java | 6 ++++++ 2 files changed, 14 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/df857f0d/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java index a2e249d..97a6248 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NamenodeFsck.java @@ -660,6 +660,13 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { decommissioningReplicas; res.totalReplicas += totalReplicasPerBlock; + boolean isMissing; + if (storedBlock.isStriped()) { + isMissing = totalReplicasPerBlock < minReplication; + } else { + isMissing = totalReplicasPerBlock == 0; + } + // count expected replicas short targetFileReplication; if (file.getErasureCodingPolicy() != null) { @@ -697,7 +704,7 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { res.numMinReplicatedBlocks++; // count missing replicas / under replicated blocks - if (totalReplicasPerBlock < targetFileReplication && totalReplicasPerBlock > 0) { + if (totalReplicasPerBlock < targetFileReplication && !isMissing) { res.missingReplicas += (targetFileReplication - totalReplicasPerBlock); res.numUnderReplicatedBlocks += 1; underReplicatedPerFile++; @@ -737,12 +744,6 @@ public class NamenodeFsck implements DataEncryptionKeyFactory { String blkName = block.toString(); report.append(blockNumber + ". " + blkName + " len=" + block.getNumBytes()); - boolean isMissing; - if (storedBlock.isStriped()) { - isMissing = totalReplicasPerBlock < minReplication; - } else { - isMissing = totalReplicasPerBlock == 0; - } if (isMissing && !isCorrupt) { // If the block is corrupted, it means all its available replicas are // corrupted in the case of replication, and it means the state of the http://git-wip-us.apache.org/repos/asf/hadoop/blob/df857f0d/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java index 254a86c..12ae858 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsck.java @@ -2013,6 +2013,9 @@ public class TestFsck { String outStr = runFsck(conf, 1, true, "/"); assertTrue(outStr.contains(NamenodeFsck.CORRUPT_STATUS)); + assertTrue(outStr.contains("Under-erasure-coded block groups:\t0")); + outStr = runFsck(conf, -1, true, "/", "-list-corruptfileblocks"); + assertTrue(outStr.contains("has 1 CORRUPT files")); } @Test (timeout = 300000) @@ -2053,6 +2056,9 @@ public class TestFsck { "-locations"); assertTrue(outStr.contains(NamenodeFsck.CORRUPT_STATUS)); assertTrue(outStr.contains("Live_repl=" + (dataBlocks - 1))); + assertTrue(outStr.contains("Under-erasure-coded block groups:\t0")); + outStr = runFsck(conf, -1, true, "/", "-list-corruptfileblocks"); + assertTrue(outStr.contains("has 1 CORRUPT files")); } private void waitForUnrecoverableBlockGroup(Configuration configuration) --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org