-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Closed
Labels
type/bugThe PR fixed a bug or issue reported a bugThe PR fixed a bug or issue reported a bug
Description
Describe the bug
If broker entry metadata enabled, we may get the following exception in many cases :
Received error from server: Failed to get batch size for entry java.lang.IllegalArgumentException: Invalid unknonwn tag type: 6this problem also reported in :
#10950
#9255
#10924
this is caused by #9046,
Before #9046 code is
public static MessageMetadata parseMessageMetadata(ByteBuf buffer) {
try {
// first, skip raw metadata if exist
skipBrokerEntryMetadataIfExist(buffer);
// initially reader-index may point to start_of_checksum : increment reader-index to start_of_metadata
// to parse metadata
skipChecksumIfPresent(buffer);
int metadataSize = (int) buffer.readUnsignedInt();
int writerIndex = buffer.writerIndex();
buffer.writerIndex(buffer.readerIndex() + metadataSize);
ByteBufCodedInputStream stream = ByteBufCodedInputStream.get(buffer);
MessageMetadata.Builder messageMetadataBuilder = MessageMetadata.newBuilder();
MessageMetadata res = messageMetadataBuilder.mergeFrom(stream, null).build();
buffer.writerIndex(writerIndex);
messageMetadataBuilder.recycle();
stream.recycle();
return res;
} catch (IOException e) {
throw new RuntimeException(e);
}
}After #9046,
public static MessageMetadata parseMessageMetadata(ByteBuf buffer) {
MessageMetadata md = LOCAL_MESSAGE_METADATA.get();
parseMessageMetadata(buffer, md);
return md;
}
public static void parseMessageMetadata(ByteBuf buffer, MessageMetadata msgMetadata) {
// initially reader-index may point to start_of_checksum : increment reader-index to start_of_metadata
// to parse metadata
skipChecksumIfPresent(buffer);
int metadataSize = (int) buffer.readUnsignedInt();
msgMetadata.parseFrom(buffer, metadataSize);
}this PR removed code
skipBrokerEntryMetadataIfExist(buffer);
So, this may cause exceptions when parseMessageMetadata
Metadata
Metadata
Assignees
Labels
type/bugThe PR fixed a bug or issue reported a bugThe PR fixed a bug or issue reported a bug