You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ka...@apache.org on 2016/10/26 18:30:34 UTC
[08/50] [abbrv] hadoop git commit: HDFS-10975. fsck
-list-corruptfileblocks does not report corrupt EC files. Contributed by
Takanobu Asanuma.
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/YARN-4752
Commit: df857f0d10bda9fbb9c3f6ec77aba0cf46fe3631
Parents: be72372
Author: Wei-Chiu Chuang <we...@apache.org>
Authored: Fri Oct 21 15:43:12 2016 -0700
Committer: Wei-Chiu Chuang <we...@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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org