This is an automated email from the ASF dual-hosted git repository.

rsivaram pushed a commit to branch 2.7
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/2.7 by this push:
     new d4e2273  KAFKA-13277; Fix size calculation for tagged string fields in 
message generator (#11308)
d4e2273 is described below

commit d4e227379c9096499788719fdbf2d1a5105d8ee9
Author: Rajini Sivaram <[email protected]>
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 <[email protected]>
---
 .../org/apache/kafka/common/message/MessageTest.java     | 16 ++++++++++++++++
 .../org/apache/kafka/message/MessageDataGenerator.java   |  2 +-
 2 files changed, 17 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 94e6bc2..9cf18cf 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
@@ -1068,6 +1068,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 9dcaa76..54f2364 100644
--- a/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java
+++ b/generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java
@@ -1530,7 +1530,7 @@ public final class MessageDataGenerator implements 
MessageClassGenerator {
                                 buffer.printf("int _stringPrefixSize = " +
                                     
"ByteUtils.sizeOfUnsignedVarint(_stringBytes.length + 1);%n");
                                 buffer.printf("_size += _stringBytes.length + 
_stringPrefixSize + " +
-                                    
"ByteUtils.sizeOfUnsignedVarint(_stringPrefixSize);%n");
+                                    
"ByteUtils.sizeOfUnsignedVarint(_stringPrefixSize + _stringBytes.length);%n");
                             } else {
                                 buffer.printf("_size += _stringBytes.length + 
" +
                                     
"ByteUtils.sizeOfUnsignedVarint(_stringBytes.length + 1);%n");

Reply via email to