[ https://issues.apache.org/jira/browse/KAFKA-10389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason Gustafson updated KAFKA-10389: ------------------------------------ Description: We're missing a bunch of zero-copy checks in the message generator for tagged fields. As an example, try adding the following field to `SimpleExampleMessage.json`: {code} { "name": "taggedZeroCopyByteBuffer", "versions": "1+", "type": "bytes", "zeroCopy": true, "taggedVersions": "1+", "tag": 8, "ignorable": true }, {code} The generated code has a few compilation errors because it assumes the byte array format. For example: {code} if (taggedZeroCopyByteBuffer.hasRemaining()) { _writable.writeUnsignedVarint(8); _writable.writeUnsignedVarint(this.taggedZeroCopyByteBuffer.length + ByteUtils.sizeOfUnsignedVarint(this.taggedZeroCopyByteBuffer.length + 1)); _writable.writeUnsignedVarint(this.taggedZeroCopyByteBuffer.length + 1); _writable.writeByteArray(this.taggedZeroCopyByteBuffer); } {code} The `toStruct` and `fromStruct` methods also seem to be missing checks. was: We're missing a bunch of zero-copy checks in the message generator. As an example, try adding the following field to `SimpleExampleMessage.json`: {code} { "name": "taggedZeroCopyByteBuffer", "versions": "1+", "type": "bytes", "zeroCopy": true, "taggedVersions": "1+", "tag": 8, "ignorable": true }, {code} The generated code has a few compilation errors because it assumes the byte array format. For example: {code} if (taggedZeroCopyByteBuffer.hasRemaining()) { _writable.writeUnsignedVarint(8); _writable.writeUnsignedVarint(this.taggedZeroCopyByteBuffer.length + ByteUtils.sizeOfUnsignedVarint(this.taggedZeroCopyByteBuffer.length + 1)); _writable.writeUnsignedVarint(this.taggedZeroCopyByteBuffer.length + 1); _writable.writeByteArray(this.taggedZeroCopyByteBuffer); } {code} The `toStruct` and `fromStruct` methods also seem to be missing checks. > Fix zero copy tagged arrays > --------------------------- > > Key: KAFKA-10389 > URL: https://issues.apache.org/jira/browse/KAFKA-10389 > Project: Kafka > Issue Type: Bug > Reporter: Jason Gustafson > Priority: Major > > We're missing a bunch of zero-copy checks in the message generator for tagged > fields. As an example, try adding the following field to > `SimpleExampleMessage.json`: > {code} > { "name": "taggedZeroCopyByteBuffer", "versions": "1+", "type": "bytes", > "zeroCopy": true, > "taggedVersions": "1+", "tag": 8, "ignorable": true }, > {code} > The generated code has a few compilation errors because it assumes the byte > array format. For example: > {code} > if (taggedZeroCopyByteBuffer.hasRemaining()) { > _writable.writeUnsignedVarint(8); > > _writable.writeUnsignedVarint(this.taggedZeroCopyByteBuffer.length + > ByteUtils.sizeOfUnsignedVarint(this.taggedZeroCopyByteBuffer.length + 1)); > > _writable.writeUnsignedVarint(this.taggedZeroCopyByteBuffer.length + 1); > _writable.writeByteArray(this.taggedZeroCopyByteBuffer); > } > {code} > The `toStruct` and `fromStruct` methods also seem to be missing checks. -- This message was sent by Atlassian Jira (v8.3.4#803005)