Werner Daehn created KAFKA-4853:
-----------------------------------

             Summary: ByteBufferSerializer does a memcopy
                 Key: KAFKA-4853
                 URL: https://issues.apache.org/jira/browse/KAFKA-4853
             Project: Kafka
          Issue Type: Bug
          Components: clients
    Affects Versions: 0.10.1.1
         Environment: all
            Reporter: Werner Daehn
            Priority: Minor


When using the ByteBufferSerializer and its backing byte[] has either an offset 
or is not of the exact length, then a memcopy takes place.
You do have a byte[] already but wrapped inside a ByteBuffer and yet the entire 
(large) payload is copied to a byte[]? 

The reason why this is done is obvious, the entire serialization framework 
works on the datatype byte[]. And since this datatype does not have an offset 
and a length information, the copy is necessary. 

But actually, I would argue into the reverse direction. The root problem is 
that the serialization is using the byte[]. 

Change the serialize() method to return a ByteBuffer instead. 
The ByteArraySerializer would wrap the byte[] into a ByteBuffer with offset=0 
and length=data.length.
All other serializers the same.
But for those cases where the ByteBufferSerializer is used, you have the extra 
options and methods.




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to