This is an automated email from the ASF dual-hosted git repository. captainzmc pushed a commit to branch HDDS-4454 in repository https://gitbox.apache.org/repos/asf/ozone.git
commit bb4511840a93f1276194d243cbf0034061fefcd7 Author: micah zhao <[email protected]> AuthorDate: Thu Sep 23 11:26:43 2021 +0800 HDDS-5742. Avoid unnecessary Bytebuffer conversions (#2673) --- .../org/apache/hadoop/hdds/scm/storage/BlockDataStreamOutput.java | 3 +-- .../src/main/java/org/apache/hadoop/ozone/common/Checksum.java | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockDataStreamOutput.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockDataStreamOutput.java index d0419fa0c3..c69af90a91 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockDataStreamOutput.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockDataStreamOutput.java @@ -485,8 +485,7 @@ public class BlockDataStreamOutput implements ByteBufferStreamOutput { throws IOException { final int effectiveChunkSize = buf.remaining(); final long offset = chunkOffset.getAndAdd(effectiveChunkSize); - ChecksumData checksumData = - checksum.computeChecksum(buf.asReadOnlyBuffer()); + ChecksumData checksumData = checksum.computeChecksum(buf); ChunkInfo chunkInfo = ChunkInfo.newBuilder() .setChunkName(blockID.get().getLocalID() + "_chunk_" + ++chunkIndex) .setOffset(offset) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/Checksum.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/Checksum.java index 76f84c46ab..d300b9ef0e 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/Checksum.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/common/Checksum.java @@ -139,6 +139,11 @@ public class Checksum { */ public ChecksumData computeChecksum(ByteBuffer data) throws OzoneChecksumException { + // If type is set to NONE, we do not need to compute the checksums. We also + // need to avoid unnecessary conversions. + if (checksumType == ChecksumType.NONE) { + return new ChecksumData(checksumType, bytesPerChecksum); + } if (!data.isReadOnly()) { data = data.asReadOnlyBuffer(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
