[ 
https://issues.apache.org/jira/browse/KAFKA-21122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aditya Kousik updated KAFKA-21122:
----------------------------------
    Summary: ByteBuffer serialize method for Serializer  (was: ByteBuffer 
serialize method to the producer Serializer)

> ByteBuffer serialize method for Serializer
> ------------------------------------------
>
>                 Key: KAFKA-21122
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21122
>             Project: Kafka
>          Issue Type: Improvement
>          Components: clients, producer 
>            Reporter: Aditya Kousik
>            Assignee: Aditya Kousik
>            Priority: Major
>              Labels: kip
>
> The consumer read path avoids a per-record copy for the record value. KIP-863 
> added a ByteBuffer method to Deserializer so that CompletedFetch#parseRecord 
> can hand the deserializer the record value straight from the fetch buffer:
>  
> {code:java}
> default T deserialize(String topic, Headers headers, ByteBuffer data) { ... } 
> {code}
>  
> The default falls back to the {{byte[]}} method, so existing deserializers 
> are unaffected, and {{ByteBufferDeserializer}} overrides it to skip the copy.
> The producer has no matching method. {{Serializer}} only returns 
> {{{}byte[]{}}}:
> {code:java}
> byte[] serialize(String topic, Headers headers, T data);{code}
> So a producer whose record value is already in a ByteBuffer has to copy it 
> into a byte[] for every record. This is the case for a caller that holds data 
> off the Java heap or in a reused buffer, for example a Netty ByteBuf exposed 
> through nioBuffer(), or a service that forwards a payload it does not read.
> We should consider adding the missing method so the write side matches the 
> read side that KIP-863 already added.



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

Reply via email to