Revert "HDDS-5742. [Ozone-Streaming] Avoid unnecessary Bytebuffer conversions (#2640)"
This reverts commit fe15324d4c7c445a5139d39e92a67f3c11c67a0c.
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 c69af90..d0419fa 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,7 +485,8 @@ private void writeChunkToContainer(ByteBuffer buf)
throws IOException {
final int effectiveChunkSize = buf.remaining();
final long offset = chunkOffset.getAndAdd(effectiveChunkSize);
- ChecksumData checksumData = checksum.computeChecksum(buf);
+ ChecksumData checksumData =
+ checksum.computeChecksum(buf.asReadOnlyBuffer());
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 67e5d47..76f84c4 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,10 +139,6 @@ public ChecksumData computeChecksum(byte[] data)
*/
public ChecksumData computeChecksum(ByteBuffer data)
throws OzoneChecksumException {
- if (checksumType == ChecksumType.NONE) {
- // Since type is set to NONE, we do not need to compute the checksums
- return new ChecksumData(checksumType, bytesPerChecksum);
- }
if (!data.isReadOnly()) {
data = data.asReadOnlyBuffer();
}
@@ -158,6 +154,11 @@ public ChecksumData computeChecksum(List<ByteString> byteStrings)
public ChecksumData computeChecksum(ChunkBuffer data)
throws OzoneChecksumException {
+ if (checksumType == ChecksumType.NONE) {
+ // Since type is set to NONE, we do not need to compute the checksums
+ return new ChecksumData(checksumType, bytesPerChecksum);
+ }
+
final Function<ByteBuffer, ByteString> function;
try {
function = Algorithm.valueOf(checksumType).newChecksumFunction();