From 1cd28729a34a0e761c7dba2612e7f9ec6f4ea31c Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Mon, 20 May 2024 23:56:48 +0100 Subject: [PATCH] GH-41717: [Java][Vector] fix issue with ByteBuffer rewind in MessageSerializer (#41718) ### Rationale for this change ### What changes are included in this PR? #41717 describes issue and change ### Are these changes tested? CI build ### Are there any user-facing changes? * GitHub Issue: #41717 Authored-by: PJ Fanning Signed-off-by: David Li --- .../org/apache/arrow/vector/ipc/message/MessageSerializer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ipc/message/MessageSerializer.java b/java/vector/src/main/java/org/apache/arrow/vector/ipc/message/MessageSerializer.java index 9deb42c498cbb..099103cd178f8 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/ipc/message/MessageSerializer.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/ipc/message/MessageSerializer.java @@ -701,7 +701,8 @@ public static MessageMetadataResult readMessage(ReadChannel in) throws IOExcepti throw new IOException( "Unexpected end of stream trying to read message."); } - messageBuffer.rewind(); + // see https://github.com/apache/arrow/issues/41717 for reason why we cast to java.nio.Buffer + ByteBuffer rewindBuffer = (ByteBuffer) ((java.nio.Buffer) messageBuffer).rewind(); // Load the message. Message message = Message.getRootAsMessage(messageBuffer);