瀏覽代碼

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

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hdfs/branches/HDFS-265@807432 13f79535-47bb-0310-9956-ffa450edef68
Hairong Kuang 15 年之前
父節點
當前提交
84f69ca6bb
共有 2 個文件被更改,包括 5 次插入1 次删除
  1. 3 0
      CHANGES.txt
  2. 2 1
      src/java/org/apache/hadoop/hdfs/server/datanode/BlockSender.java

+ 3 - 0
CHANGES.txt

@@ -166,6 +166,9 @@ Trunk (unreleased changes)
     HDFS-547. TestHDFSFileSystemContract#testOutputStreamClosedTwice
     sometimes fails with CloseByInterruptException. (hairong)
 
+    HDFS-553. BlockSender reports wrong failed position in ChecksumException.
+    (hairong)
+
 Release 0.20.1 - Unreleased
 
   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);
           checksum.update(buf, dOff, dLen);
           if (!checksum.compare(buf, cOff)) {
+            long failedPos = offset + len -dLeft;
             throw new ChecksumException("Checksum failed at " + 
-                                        (offset + len - dLeft), len);
+                                        failedPos, failedPos);
           }
           dLeft -= dLen;
           dOff += dLen;