Repository: hadoop Updated Branches: refs/heads/branch-2.8 250ddf155 -> 18f762866
HDFS-10625. VolumeScanner to report why a block is found bad. Contributed by Rushabh S Shah and Yiqun Lin. (cherry picked from commit 5d1609ddf275e4907bd224bf618e2aad4b262888) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/18f76286 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/18f76286 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/18f76286 Branch: refs/heads/branch-2.8 Commit: 18f7628664b1eff907698ff80c142c93ef912525 Parents: 250ddf1 Author: Yongjun Zhang <[email protected]> Authored: Mon Aug 29 13:58:05 2016 -0700 Committer: Yongjun Zhang <[email protected]> Committed: Mon Aug 29 14:15:23 2016 -0700 ---------------------------------------------------------------------- .../apache/hadoop/hdfs/server/datanode/BlockSender.java | 12 +++++++++--- .../hadoop/hdfs/server/datanode/VolumeScanner.java | 5 +++-- 2 files changed, 12 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/18f76286/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java index 7171e73..e060cab 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java @@ -157,6 +157,9 @@ class BlockSender implements java.io.Closeable { /** The reference to the volume where the block is located */ private FsVolumeReference volumeRef; + /** The replica of the block that is being read. */ + private final Replica replica; + // Cache-management related fields private final long readaheadLength; @@ -239,7 +242,6 @@ class BlockSender implements java.io.Closeable { "If verifying checksum, currently must also send it."); } - final Replica replica; final long replicaVisibleLength; try(AutoCloseableLock lock = datanode.data.acquireDatasetLock()) { replica = getReplica(block, datanode); @@ -689,8 +691,12 @@ class BlockSender implements java.io.Closeable { checksum.update(buf, dOff, dLen); if (!checksum.compare(buf, cOff)) { long failedPos = offset + datalen - dLeft; - throw new ChecksumException("Checksum failed at " + failedPos, - failedPos); + StringBuilder replicaInfoString = new StringBuilder(); + if (replica != null) { + replicaInfoString.append(" for replica: " + replica.toString()); + } + throw new ChecksumException("Checksum failed at " + failedPos + + replicaInfoString, failedPos); } dLeft -= dLen; dOff += dLen; http://git-wip-us.apache.org/repos/asf/hadoop/blob/18f76286/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/VolumeScanner.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/VolumeScanner.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/VolumeScanner.java index 6da6eb0..0661ff0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/VolumeScanner.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/VolumeScanner.java @@ -281,12 +281,13 @@ public class VolumeScanner extends Thread { volume.getBasePath(), block); return; } - LOG.warn("Reporting bad {} on {}", block, volume.getBasePath()); + LOG.warn("Reporting bad " + block + " with volume " + + volume.getBasePath(), e); try { scanner.datanode.reportBadBlocks(block, volume); } catch (IOException ie) { // This is bad, but not bad enough to shut down the scanner. - LOG.warn("Cannot report bad " + block.getBlockId(), e); + LOG.warn("Cannot report bad block " + block, ie); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
