HADOOP-14405. Fix performance regression due to incorrect use of DataChecksum. 
Contributed by LiXin Ge.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/06ffeb8d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/06ffeb8d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/06ffeb8d

Branch: refs/heads/HDFS-9806
Commit: 06ffeb8d4d705d14e8755364099286ac4ed3bb83
Parents: ab2bb93
Author: Masatake Iwasaki <iwasak...@apache.org>
Authored: Wed May 10 14:14:20 2017 +0900
Committer: Masatake Iwasaki <iwasak...@apache.org>
Committed: Wed May 10 14:16:41 2017 +0900

----------------------------------------------------------------------
 .../java/org/apache/hadoop/util/DataChecksum.java     | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/06ffeb8d/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
----------------------------------------------------------------------
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
index 6982a92..03946af 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
@@ -296,12 +296,20 @@ public class DataChecksum implements Checksum {
   public void verifyChunkedSums(ByteBuffer data, ByteBuffer checksums,
       String fileName, long basePos) throws ChecksumException {
     if (type.size == 0) return;
-    
+
     if (data.hasArray() && checksums.hasArray()) {
       final int dataOffset = data.arrayOffset() + data.position();
       final int crcsOffset = checksums.arrayOffset() + checksums.position();
-      verifyChunked(type, summer, data.array(), dataOffset, data.remaining(),
-          bytesPerChecksum, checksums.array(), crcsOffset, fileName, basePos);
+
+      if (NativeCrc32.isAvailable()) {
+        NativeCrc32.verifyChunkedSumsByteArray(bytesPerChecksum, type.id,
+                checksums.array(), crcsOffset, data.array(), dataOffset,
+                data.remaining(), fileName, basePos);
+      } else {
+        verifyChunked(type, summer, data.array(), dataOffset, data.remaining(),
+                bytesPerChecksum, checksums.array(), crcsOffset, fileName,
+                basePos);
+      }
       return;
     }
     if (NativeCrc32.isAvailable() && data.isDirect()) {


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to