Browse Source

HDFS-553. BlockSender reports wrong failed position in ChecksumException. Contributed by Hairong Kuang.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hdfs/trunk@807433 13f79535-47bb-0310-9956-ffa450edef68
Hairong Kuang 16 years ago
parent
commit
ec3edd2c8d
2 changed files with 5 additions and 1 deletions
  1. 3 0
      CHANGES.txt
  2. 2 1
      src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java

+ 3 - 0
CHANGES.txt

@@ -173,6 +173,9 @@ Trunk (unreleased changes)
     HDFS-561. Fix write pipeline READ_TIMEOUT in DataTransferProtocol.
     HDFS-561. Fix write pipeline READ_TIMEOUT in DataTransferProtocol.
     (Kan Zhang via szetszwo)
     (Kan Zhang via szetszwo)
 
 
+    HDFS-553. BlockSender reports wrong failed position in ChecksumException.
+    (hairong)
+ 
 Release 0.20.1 - Unreleased
 Release 0.20.1 - Unreleased
 
 
   IMPROVEMENTS
   IMPROVEMENTS

+ 2 - 1
src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java

@@ -290,8 +290,9 @@ class BlockSender implements java.io.Closeable, FSConstants {
           int dLen = Math.min(dLeft, bytesPerChecksum);
           int dLen = Math.min(dLeft, bytesPerChecksum);
           checksum.update(buf, dOff, dLen);
           checksum.update(buf, dOff, dLen);
           if (!checksum.compare(buf, cOff)) {
           if (!checksum.compare(buf, cOff)) {
+            long failedPos = offset + len -dLeft;
             throw new ChecksumException("Checksum failed at " + 
             throw new ChecksumException("Checksum failed at " + 
-                                        (offset + len - dLeft), len);
+                                        failedPos, failedPos);
           }
           }
           dLeft -= dLen;
           dLeft -= dLen;
           dOff += dLen;
           dOff += dLen;