You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Sean Quah (Jira)" <ji...@apache.org> on 2024/12/10 15:28:00 UTC

[jira] [Created] (KAFKA-18199) Incorrect size calculation for ConsumerGroupMemberMetadataValue.classicMemberMetadata

Sean Quah created KAFKA-18199:
---------------------------------

             Summary: Incorrect size calculation for ConsumerGroupMemberMetadataValue.classicMemberMetadata
                 Key: KAFKA-18199
                 URL: https://issues.apache.org/jira/browse/KAFKA-18199
             Project: Kafka
          Issue Type: Bug
          Components: group-coordinator
            Reporter: Sean Quah
            Assignee: Sean Quah


The code generated for {{write}} looks like:
{code:java}
_writable.writeUnsignedVarint(0);
_writable.writeUnsignedVarint(this.classicMemberMetadata.size(_cache, _version, _context) + 1);
_writable.writeUnsignedVarint(1);
classicMemberMetadata.write(_writable, _cache, _version, _context);{code}
while the code generated for {{addSize}} looks like:
{code:java}
_size.addBytes(1);
_size.addBytes(1);
int _sizeBeforeStruct = _size.totalSize();
this.classicMemberMetadata.addSize(_size, _cache, _version, _context);
int _structSize = _size.totalSize() - _sizeBeforeStruct;
_size.addBytes(ByteUtils.sizeOfUnsignedVarint(_structSize)); // missing a `+ 1`{code}
This becomes a problem when the serialized size of the ClassicMemberMetadata is exactly 127 bytes, since the varint representations of {{127}} and {{128}} have different lengths.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)