Reproduction
EscapeBridge.decodeMsgList iterates the message buffers and unconditionally reads getMessageQueueOffset().get(i). If a GetMessageResult contains a valid message buffer but the queue-offset metadata is missing or shorter than the buffer list, the method throws IndexOutOfBoundsException.
This turns a recoverable failover-read metadata inconsistency into a failed escape-bridge read.
Expected behavior
Decode valid messages even when the optional queue-offset list is incomplete. Apply the CQ offset only when it exists; otherwise retain the decoded message offset.
Scope
Guard the offset lookup and add a regression test using a valid encoded message with no queue-offset metadata.
Reproduction
EscapeBridge.decodeMsgListiterates the message buffers and unconditionally readsgetMessageQueueOffset().get(i). If aGetMessageResultcontains a valid message buffer but the queue-offset metadata is missing or shorter than the buffer list, the method throwsIndexOutOfBoundsException.This turns a recoverable failover-read metadata inconsistency into a failed escape-bridge read.
Expected behavior
Decode valid messages even when the optional queue-offset list is incomplete. Apply the CQ offset only when it exists; otherwise retain the decoded message offset.
Scope
Guard the offset lookup and add a regression test using a valid encoded message with no queue-offset metadata.