Hi John, Thanks for your comments!
For your first question, I see some unit test cases that give us a ByteBuffer not set to read before calling `ByteBufferSerializer#serialize(String, ByteBuffer)`, e.g. `ArticleSerializer`, `AugmentedArticleSerializer`, `AugmentedCommentSerializer` and `CommentSerializer`. If we don't flip the ByteBuffer inside the `ByteBufferSerializer#serialize(String, ByteBuffer)` it will break user code using `ByteBufferSerializer#serialize(String, ByteBuffer)`, and if we don't flip the ByteBuffer inside the `ByteBufferSerializer#serializeToByteBuffer(String, ByteBuffer)`, it will be even more strange to the user, because `ByteBufferSerializer#serialize(String, ByteBuffer)` and `ByteBufferSerializer#serializeToByteBuffer(String, ByteBuffer)` require users use the ByteBufferSerializer in two different ways. So if we think of `ByteBufferSerialize#serializeToByteBuffer(String, ByteBuffer)` as setting up a ByteBuffer to read later, is it more acceptable? For your second question, I plan to ultimately replace byte[] with ByteBuffer, I will document the intent in your KIP and JavaDocs later. I will clarify that if a Serializer implements the new method, then the old one will never be called. Best, ShunKang John Roesler <vvcep...@apache.org> 于2022年11月4日周五 22:42写道: > Hi ShunKang, > > Thanks for the KIP! > > I’ve been wanting to transition toward byte buffers for a while, so this > is a nice start. > > I thought it was a bit weird to flip the buffer inside the serializer, but > I see the existing one already does that. I would have thought it would > make more sense for the caller to give us a buffer already set up for > reading. Do you think it makes sense to adopt this pattern for the new > method? > > Do you plan to keep the new methods as optional indefinitely, or do you > plan to ultimately replace byte[] with ByteBuffer? If it’s the latter, then > it would be good to document the intent in your KIP and JavaDocs. > > It would be good to clarify that if a Serializer implements the new > method, then the old one will never be called. That way, implementations > can just throw an exception on that method instead of implementing both. > > Thanks again! > -John > > On Wed, Nov 2, 2022, at 20:14, ShunKang Lin wrote: > > Bump this thread again : ) > > > > ShunKang Lin <linshunkang....@gmail.com>于2022年9月25日 周日23:59写道: > > > >> Hi all, I'd like to start a new discussion thread on KIP-872 (Kafka > >> Client) which proposes that add Serializer#serializeToByteBuffer() to > >> reduce memory copying. > >> > >> KIP: > >> > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=228495828 > >> Thanks, ShunKang > >> >