diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java index a6cd98e48ad9..b676b1dc23de 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java @@ -855,7 +855,11 @@ private void appendLastChunkBuffer(ChunkBuffer chunkBuffer, int offset, try { LOG.debug("put into last chunk buffer start = {} len = {}", copyStart, copyLen); - lastChunkBuffer.put(bb.array(), copyStart, copyLen); + int origPos = bb.position(); + int origLimit = bb.limit(); + bb.position(copyStart).limit(copyStart + copyLen); + lastChunkBuffer.put(bb); + bb.position(origPos).limit(origLimit); } catch (BufferOverflowException e) { LOG.error("appending from " + copyStart + " for len=" + copyLen + ". lastChunkBuffer remaining=" + lastChunkBuffer.remaining() +