From e379b447ffe8c245e55ff22cca107c1a1ab4ff4d Mon Sep 17 00:00:00 2001 From: franz1981 Date: Thu, 9 Sep 2021 14:52:22 +0200 Subject: [PATCH] ARTEMIS-3465 BufferSplitter::split shouldn't consume input buffer --- .../core/persistence/impl/journal/BufferSplitter.java | 2 +- .../core/persistence/impl/journal/BufferSplitterTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitter.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitter.java index fe812cf710..4b6910166f 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitter.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitter.java @@ -28,7 +28,7 @@ public class BufferSplitter { public static void split(ActiveMQBuffer buffer, int splitSize, Consumer target) { byte[] bytesBuffer = new byte[buffer.readableBytes()]; - buffer.readBytes(bytesBuffer); + buffer.getBytes(buffer.readerIndex(), bytesBuffer); split(bytesBuffer, splitSize, target); } diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitterTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitterTest.java index 44d7c001f1..af670483a4 100644 --- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitterTest.java +++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/persistence/impl/journal/BufferSplitterTest.java @@ -33,11 +33,17 @@ public class BufferSplitterTest { ActiveMQBuffer outputBuffer = ActiveMQBuffers.fixedBuffer(1000 * DataConstants.SIZE_INT); + final int rdx = buffer.readerIndex(); + final int readableBytes = buffer.readableBytes(); + BufferSplitter.split(buffer, 77, (c) -> { Assert.assertTrue(c.getEncodeSize() <= 77); c.encode(outputBuffer); }); + Assert.assertEquals(rdx, buffer.readerIndex()); + Assert.assertEquals(readableBytes, buffer.readableBytes()); + outputBuffer.resetReaderIndex(); buffer.resetReaderIndex();