You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by rs...@apache.org on 2021/09/08 08:34:27 UTC
[kafka] branch 2.8 updated: KAFKA-13277;
Fix size calculation for tagged string fields in message generator
(#11308)
This is an automated email from the ASF dual-hosted git repository.
rsivaram pushed a commit to branch 2.8
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/2.8 by this push:
new df0d57a KAFKA-13277; Fix size calculation for tagged string fields in message generator (#11308)
df0d57a is described below
commit df0d57a63ec2de3311fd07e08b255f42eccdc94b
Author: Rajini Sivaram <ra...@googlemail.com>
AuthorDate: Tue Sep 7 21:02:45 2021 +0100
KAFKA-13277; Fix size calculation for tagged string fields in message generator (#11308)
Reviewers: Colin P. McCabe <cm...@apache.org>
---
.../org/apache/kafka/common/message/MessageTest.java | 16 ++++++++++++++++
.../org/apache/kafka/message/MessageDataGenerator.java | 3 ++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java b/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java
index 5dc379e..0fcab84 100644
--- a/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java
+++ b/clients/src/test/java/org/apache/kafka/common/message/MessageTest.java
@@ -941,6 +941,22 @@ public final class MessageTest {
verifyWriteSucceeds((short) 6, createTopics);
}
+ @Test
+ public void testLongTaggedString() throws Exception {
+ char[] chars = new char[1024];
+ Arrays.fill(chars, 'a');
+ String longString = new String(chars);
+ SimpleExampleMessageData message = new SimpleExampleMessageData()
+ .setMyString(longString);
+ ObjectSerializationCache cache = new ObjectSerializationCache();
+ short version = 1;
+ int size = message.size(cache, version);
+ ByteBuffer buf = ByteBuffer.allocate(size);
+ ByteBufferAccessor byteBufferAccessor = new ByteBufferAccessor(buf);
+ message.write(byteBufferAccessor, cache, version);
+ assertEquals(size, buf.position());
+ }
+
private void verifyWriteRaisesNpe(short version, Message message) {
ObjectSerializationCache cache = new ObjectSerializationCache();
assertThrows(NullPointerException.class, () -> {
diff --git a/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java b/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java
index 81b0c1e..5e591c5 100644
--- a/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java
+++ b/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java
@@ -1157,7 +1157,8 @@ public final class MessageDataGenerator implements MessageClassGenerator {
buffer.printf("int _stringPrefixSize = " +
"ByteUtils.sizeOfUnsignedVarint(_stringBytes.length + 1);%n");
buffer.printf("_size.addBytes(_stringBytes.length + _stringPrefixSize + " +
- "ByteUtils.sizeOfUnsignedVarint(_stringPrefixSize));%n");
+ "ByteUtils.sizeOfUnsignedVarint(_stringPrefixSize + _stringBytes.length));%n");
+
} else {
buffer.printf("_size.addBytes(_stringBytes.length + " +
"ByteUtils.sizeOfUnsignedVarint(_stringBytes.length + 1));%n");