+1 Florentin and TengYao - this would be a super useful improvement.

thanks,
adrian



On Tue, 10 Mar 2026 at 15:19, Florentin Simion <[email protected]> wrote:

> Hi TengYao,
>
> I think this is a very useful feature for advanced applications that want
> to do buffer pooling, but cannot due to the current Serializer API
> accepting only byte arrays. Which I think is a pity as beyond the external
> interfaces (Serializer and Partitioner) most of the code can work with
> ByteBuffers.
>
> I jumped the gun a little by already giving it a go based on the KIP you
> put together (thank you): https://github.com/apache/kafka/pull/21656 — so
> the proposed design definitely works. Based on that, I can also provide
> some feedback:
>
>   - Serializer method naming: I would name the new method differently than
> the old one, since overloading by return type alone is not possible in
> Java, and changing parameter order may be confusing for users. I  think an
> explicit name such as serializeToByteBuffer would be more appropriate.
> Unless the intent is to eventually deprecate the byte[] variant and reclaim
> the serialize name for the new one?
>
>   - Partitioner default implementation: The new ByteBuffer overload works
> well since the parameters are different, and providing a default
> implementation that delegates to the byte[] variant is straightforward. One
> note I find important here: when delegating, we should avoid allocating a
> new byte[] from the ByteBuffer when possible (i.e., return the backing
> array directly if it exactly matches the buffer contents). Users upgrading
> should not encounter an extra allocation that could cause performance
> regressions.
>
>   - Internal ByteBuffer propagation: Something we could capture in the KIP
> is that to make the producer fully ByteBuffer-oriented, the built-in
> partitioner's murmur2 function needs to be updated to accept ByteBuffer
> directly. We could have used the same delegation strategy as with the
> Partitioner interface, but since this is not a public API with backward
> compatibility constraints, I think we can simply make it ByteBuffer-native.
>
> Otherwise, I don't see anything outstanding. As mentioned in the KIP, this
> will enable better memory management for applications across the entire
> consume-to-produce flow, closing the cycle that KIP-863 started on the
> deserializer side.
>
> Please let me know what you think.
>
> Thanks,
> Flore


On Tue, 20 May 2025 at 09:17, TengYao Chi <[email protected]> wrote:

> Hi everyone,
>
> I want to bump this thread manually.
> Thanks for your attention.
>
> Best,
> TengYao
>
> TengYao Chi <[email protected]> 於 2025年5月6日 週二 下午12:27寫道:
>
> > Hello everyone,
> >
> > I want to start a discussion thread on KIP-646
> > <https://cwiki.apache.org/confluence/x/RiR4CQ>, which proposes enabling
> > the Serializer API to support ByteBuffer.
> >
> > Please take a look and let me know what you think.
> > I would appreciate any suggestions and feedback.
> >
> > Best regards,
> > TengYao
> >
> >
> >
>

Reply via email to