Seems you missed my reply from 31/6. C&P below: > (1) The current PR suggests to always instantiate an `ArrayList` -- > however, if a user wants to use any other list implementation, they have > no way to specify this. It might be good to either allow users to > specify the list-type on the deserializer, or encode the list type > directly in the bytes, and hence, whatever type the serialized list was, > the same type will be used on deserialization (might only work for Java > build-it list types). > > Personally, I thinks its better/more flexible to specify the list-type > on the deserializer, as it also allows to plug-in any custom list types. > > This could of course be opt-in and for the case users don't care, we > just default to `ArrayList`. > > > (2) For Java built-in types, we could check the type via `instanceof` -- > if the type is unknown, we fall back to per-element length encoding. As > an alternative, we could also add a constructor taking an `enum` with > two values `fixed-size` and `variable-size`, or a config instead of a > constructor element. > > > Just bounding off ideas -- maybe there are good reasons (too > complicated?) to not support either of them. >
-Matthias On 6/10/19 8:44 AM, Development wrote: > Bump > >> On May 24, 2019, at 2:09 PM, Development <d...@yeralin.net> wrote: >> >> Hey, >> >> - did we consider to make the return type (ie, ArrayList, vs >> LinkesList) configurable or encode it the serialized bytes? >> >> Not sure about this one. Could you elaborate? >> >> - atm the size of each element is encoded individually; did we consider >> an optimization for fixed size elements (like Long) to avoid this overhead? >> >> I cannot think of any clean way to do so. How would you see it? >> >> Btw I resolved all your comments under PR >> >> Best, >> Daniyar Yeralin >> >>> On May 24, 2019, at 12:01 AM, Matthias J. Sax <matth...@confluent.io> wrote: >>> >>> Thanks for the KIP. I also had a look into the PR and have two follow up >>> question: >>> >>> >>> - did we consider to make the return type (ie, ArrayList, vs >>> LinkesList) configurable or encode it the serialized bytes? >>> >>> - atm the size of each element is encoded individually; did we consider >>> an optimization for fixed size elements (like Long) to avoid this overhead? >>> >>> >>> >>> -Matthias >>> >>> On 5/15/19 6:05 PM, John Roesler wrote: >>>> Sounds good! >>>> >>>> On Tue, May 14, 2019 at 9:21 AM Development <d...@yeralin.net> wrote: >>>>> >>>>> Hey, >>>>> >>>>> I think it the proposal is finalized, no one raised any concerns. Shall >>>>> we call it for a [VOTE]? >>>>> >>>>> Best, >>>>> Daniyar Yeralin >>>>> >>>>>> On May 10, 2019, at 10:17 AM, John Roesler <j...@confluent.io> wrote: >>>>>> >>>>>> Good observation, Daniyar. >>>>>> >>>>>> Maybe we should just not implement support for serdeFrom. >>>>>> >>>>>> We can always add it later, but I think you're right, we need some >>>>>> kind of more sophisticated support, or at least a second argument for >>>>>> the inner class. >>>>>> >>>>>> For now, it seems like most use cases would be satisfied without >>>>>> serdeFrom(...List...) >>>>>> >>>>>> -John >>>>>> >>>>>> On Fri, May 10, 2019 at 8:57 AM Development <d...@yeralin.net> wrote: >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I was trying to add some test cases for the list serde, and it led me >>>>>>> to this class >>>>>>> `org.apache.kafka.common.serialization.SerializationTest`. I saw that >>>>>>> it relies on method >>>>>>> `org.apache.kafka.common.serialization.serdeFrom(Class<T> type)` >>>>>>> >>>>>>> Now, I’m not sure how to adapt List<T> serde for this method, since it >>>>>>> will be a “nested class”. What is the best approach in this case? >>>>>>> >>>>>>> I remember that in Jackson for example, one uses a TypeFactory, and >>>>>>> constructs “collectionType” of two classes. For example, >>>>>>> `constructCollectionType(List.class, String.class).getClass()`. I don’t >>>>>>> think it applies here. >>>>>>> >>>>>>> Any ideas? >>>>>>> >>>>>>> Best, >>>>>>> Daniyar Yeralin >>>>>>> >>>>>>>> On May 9, 2019, at 2:10 PM, Development <d...@yeralin.net> wrote: >>>>>>>> >>>>>>>> Hey Sophie, >>>>>>>> >>>>>>>> Thank you for your input. I think I’d rather finish this KIP as is, >>>>>>>> and then open a new one for the Collections (if everyone agrees). I >>>>>>>> don’t want to extend the current KIP-466, since most of the work is >>>>>>>> already done for it. >>>>>>>> >>>>>>>> Meanwhile, I’ll start adding some test cases for this new list serde >>>>>>>> since this discussion seems to be approaching its logical end. >>>>>>>> >>>>>>>> Best, >>>>>>>> Daniyar Yeralin >>>>>>>> >>>>>>>>> On May 9, 2019, at 1:35 PM, Sophie Blee-Goldman <sop...@confluent.io> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Good point about serdes for other Collections. On the one hand I'd >>>>>>>>> guess >>>>>>>>> that non-List Collections are probably relatively rare in practice (if >>>>>>>>> anyone disagrees please correct me!) but on the other hand, a) even >>>>>>>>> if just >>>>>>>>> a small number of people benefit I think it's worth the extra effort >>>>>>>>> and b) >>>>>>>>> if we do end up needing/wanting them in the future it would save us a >>>>>>>>> KIP >>>>>>>>> to just add them now. Personally I feel it would make sense to expand >>>>>>>>> the >>>>>>>>> scope of this KIP a bit to include all Collections as a logical unit, >>>>>>>>> but >>>>>>>>> the ROI could be low.. >>>>>>>>> >>>>>>>>> (I know of at least one instance in the unit tests where a Set serde >>>>>>>>> could >>>>>>>>> be useful, and there may be more) >>>>>>>>> >>>>>>>>> On Thu, May 9, 2019 at 7:27 AM Development <d...@yeralin.net> wrote: >>>>>>>>> >>>>>>>>>> Hey, >>>>>>>>>> >>>>>>>>>> I don’t see any replies. Seems like this proposal can be finalized >>>>>>>>>> and >>>>>>>>>> called for a vote? >>>>>>>>>> >>>>>>>>>> Also I’ve been thinking. Do we need more serdes for other >>>>>>>>>> Collections? >>>>>>>>>> Like queue or set for example >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> Daniyar Yeralin >>>>>>>>>> >>>>>>>>>>> On May 8, 2019, at 2:28 PM, John Roesler <j...@confluent.io> wrote: >>>>>>>>>>> >>>>>>>>>>> Hi Daniyar, >>>>>>>>>>> >>>>>>>>>>> No worries about the procedural stuff. Prior experience with KIPs is >>>>>>>>>>> not required :) >>>>>>>>>>> >>>>>>>>>>> I was just trying to help you propose this stuff in a way that the >>>>>>>>>>> others will find easy to review. >>>>>>>>>>> >>>>>>>>>>> Thanks for updating the KIP. Thanks to the others for helping out >>>>>>>>>>> with >>>>>>>>>>> the syntax. >>>>>>>>>>> >>>>>>>>>>> Given these updates, I'm curious if anyone else has feedback about >>>>>>>>>>> this proposal. Personally, I think it sounds fine! >>>>>>>>>>> >>>>>>>>>>> -John >>>>>>>>>>> >>>>>>>>>>> On Wed, May 8, 2019 at 1:01 PM Development <d...@yeralin.net> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Hey, >>>>>>>>>>>> >>>>>>>>>>>> That worked! I certainly lack Java generics knowledge. Thanks for >>>>>>>>>>>> the >>>>>>>>>> snippet. I’ll update KIP again. >>>>>>>>>>>> >>>>>>>>>>>> Best, >>>>>>>>>>>> Daniyar Yeralin >>>>>>>>>>>> >>>>>>>>>>>>> On May 8, 2019, at 1:39 PM, Chris Egerton <chr...@confluent.io> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Daniyar, >>>>>>>>>>>>> >>>>>>>>>>>>> I think you may want to tweak your syntax a little: >>>>>>>>>>>>> >>>>>>>>>>>>> public static <T> Serde<List<T>> List(Serde<T> innerSerde) { >>>>>>>>>>>>> return new ListSerde<T>(innerSerde); >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> Does that work? >>>>>>>>>>>>> >>>>>>>>>>>>> Cheers, >>>>>>>>>>>>> >>>>>>>>>>>>> Chris >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, May 8, 2019 at 10:29 AM Development <d...@yeralin.net >>>>>>>>>>>>> <mailto: >>>>>>>>>> d...@yeralin.net>> wrote: >>>>>>>>>>>>> Hi John, >>>>>>>>>>>>> >>>>>>>>>>>>> I updated JIRA and KIP. >>>>>>>>>>>>> >>>>>>>>>>>>> I didn’t know about the process, and created PR before I knew >>>>>>>>>>>>> about >>>>>>>>>> KIPs :) >>>>>>>>>>>>> >>>>>>>>>>>>> As per static declaration, I don’t think Java allows that: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Best, >>>>>>>>>>>>> Daniyar Yeralin >>>>>>>>>>>>> >>>>>>>>>>>>>> On May 7, 2019, at 2:22 PM, John Roesler <j...@confluent.io >>>>>>>>>>>>>> <mailto: >>>>>>>>>> j...@confluent.io>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks for that update. Do you mind making changes primarily on >>>>>>>>>>>>>> the >>>>>>>>>>>>>> KIP document ? ( >>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-466%3A+Add+support+for+List%3CT%3E+serialization+and+deserialization >>>>>>>>>> < >>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-466%3A+Add+support+for+List%3CT%3E+serialization+and+deserialization >>>>>>>>>>> ) >>>>>>>>>>>>>> >>>>>>>>>>>>>> This is the design document that we have to agree on and vote >>>>>>>>>>>>>> for, the >>>>>>>>>>>>>> PR comes later. It can be nice to have an implementation to look >>>>>>>>>>>>>> at, >>>>>>>>>>>>>> but the KIP is the main artifact for this discussion. >>>>>>>>>>>>>> >>>>>>>>>>>>>> With this in mind, it will help get more reviewers to look at it >>>>>>>>>>>>>> if >>>>>>>>>>>>>> you can tidy up the KIP document so that it stands on its own. >>>>>>>>>>>>>> People >>>>>>>>>>>>>> shouldn't have to look at any other document to understand the >>>>>>>>>>>>>> motivation of the proposal, and they shouldn't have to look at a >>>>>>>>>>>>>> PR to >>>>>>>>>>>>>> see what the public API will look like. If it helps, you can >>>>>>>>>>>>>> take a >>>>>>>>>>>>>> look at some other recent KIPs. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Given that the list serde needs an inner serde, I agree you >>>>>>>>>>>>>> can't have >>>>>>>>>>>>>> a zero-argument static factory method for it, but it seems you >>>>>>>>>>>>>> could >>>>>>>>>>>>>> still have a static method: >>>>>>>>>>>>>> `public static Serde<List<T>> List(Serde<T> innerSerde)`. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thoughts? >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Tue, May 7, 2019 at 12:18 PM Development <d...@yeralin.net >>>>>>>>>>>>>> <mailto: >>>>>>>>>> d...@yeralin.net>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Absolutely agree. Already pushed another commit to remove >>>>>>>>>>>>>>> comparator >>>>>>>>>> argument: https://github.com/apache/kafka/pull/6592 < >>>>>>>>>> https://github.com/apache/kafka/pull/6592> < >>>>>>>>>> https://github.com/apache/kafka/pull/6592 < >>>>>>>>>> https://github.com/apache/kafka/pull/6592>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thank you for your input John! I really appreciate it. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> What about this point I made: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1. Since type for List serde needs to be declared before hand, I >>>>>>>>>> could not create a static method for List Serde under >>>>>>>>>> org.apache.kafka.common.serialization.Serdes. I addressed it in the >>>>>>>>>> KIP: >>>>>>>>>>>>>>> P.S. Static method corresponding to ListSerde under >>>>>>>>>> org.apache.kafka.common.serialization.Serdes (something like static >>>>>>>>>> public >>>>>>>>>> Serde<List<T>> List() {...} >>>>>>>>>> inorg.apache.kafka.common.serialization.Serdes) >>>>>>>>>> class cannot be added because type needs to be defined beforehand. >>>>>>>>>> That's >>>>>>>>>> why one needs to create List Serde in the following fashion: >>>>>>>>>>>>>>> new Serdes.ListSerde<String>(Serdes.String(), >>>>>>>>>> Comparator.comparing(String::length)); >>>>>>>>>>>>>>> (can possibly be simplified by declaring import static >>>>>>>>>> org.apache.kafka.common.serialization.Serdes.ListSerde) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On May 7, 2019, at 11:50 AM, John Roesler <j...@confluent.io >>>>>>>>>> <mailto:j...@confluent.io>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks for the reply Daniyar, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> That makes much more sense! I thought I must be missing >>>>>>>>>>>>>>>> something, >>>>>>>>>> but I >>>>>>>>>>>>>>>> couldn't for the life of me figure it out. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> What do you think about just taking an argument, instead of >>>>>>>>>>>>>>>> for a >>>>>>>>>>>>>>>> Comparator, for the Serde of the inner type? That way, the >>>>>>>>>>>>>>>> user can >>>>>>>>>> control >>>>>>>>>>>>>>>> how exactly the inner data gets serialized, while also >>>>>>>>>>>>>>>> bounding the >>>>>>>>>> generic >>>>>>>>>>>>>>>> parameter properly. As for the order, since the list is >>>>>>>>>>>>>>>> already in a >>>>>>>>>>>>>>>> specific order, which the user themselves controls, it doesn't >>>>>>>>>>>>>>>> seem >>>>>>>>>>>>>>>> strictly necessary to offer an option to sort the data during >>>>>>>>>> serialization. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> -John >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Mon, May 6, 2019 at 8:47 PM Development <d...@yeralin.net >>>>>>>>>> <mailto:d...@yeralin.net>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi John, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I’m really sorry for the confusion. I cloned that JIRA ticket >>>>>>>>>>>>>>>>> from >>>>>>>>>> an old >>>>>>>>>>>>>>>>> one about introducing UUID Serde, and I guess was too hasty >>>>>>>>>>>>>>>>> while >>>>>>>>>> editing >>>>>>>>>>>>>>>>> the copy to notice the mistake. Just edited the ticket. Sorry >>>>>>>>>>>>>>>>> for >>>>>>>>>> any >>>>>>>>>>>>>>>>> inconvenience . >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> As per comparator, I agree. Let’s make user be responsible for >>>>>>>>>>>>>>>>> implementing comparable interface. I was just thinking to >>>>>>>>>>>>>>>>> make the >>>>>>>>>> serde a >>>>>>>>>>>>>>>>> little more flexible (i.e. let user decide in which order >>>>>>>>>>>>>>>>> records >>>>>>>>>> is going >>>>>>>>>>>>>>>>> to be inserted into a change log topic). >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thank you! >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>> Daniyar Yeralin >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On May 6, 2019, at 5:37 PM, John Roesler <j...@confluent.io >>>>>>>>>> <mailto:j...@confluent.io>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Daniyar, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks for the proposal! >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> If I understand the point about the comparator, is it just to >>>>>>>>>> capture the >>>>>>>>>>>>>>>>>> generic type parameter? If so, then anything that implements >>>>>>>>>>>>>>>>>> a >>>>>>>>>> known >>>>>>>>>>>>>>>>>> interface would work just as well, right? I've been >>>>>>>>>>>>>>>>>> considering >>>>>>>>>> adding >>>>>>>>>>>>>>>>>> something like the Jackson TypeReference (or similar classes >>>>>>>>>>>>>>>>>> in >>>>>>>>>> many >>>>>>>>>>>>>>>>> other >>>>>>>>>>>>>>>>>> projects). Would this be a good time to do it? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Note that it's not necessary to actually require that the >>>>>>>>>> captured type >>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>> Comparable (as this proposal currently does), it's just a >>>>>>>>>>>>>>>>>> way to >>>>>>>>>> make >>>>>>>>>>>>>>>>> sure >>>>>>>>>>>>>>>>>> there is some method that makes use of the generic type >>>>>>>>>> parameter, to >>>>>>>>>>>>>>>>> force >>>>>>>>>>>>>>>>>> the compiler to capture the type. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Just to make sure I understand the motivation... You >>>>>>>>>>>>>>>>>> expressed a >>>>>>>>>> desire >>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>> be able to serialize UUIDs, which I didn't follow, since >>>>>>>>>>>>>>>>>> there is >>>>>>>>>> a >>>>>>>>>>>>>>>>>> built-in UUID serde: >>>>>>>>>> org.apache.kafka.common.serialization.Serdes#UUID, >>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>> also, a UUID isn't a List. Did you mean that you need to use >>>>>>>>>> *lists of* >>>>>>>>>>>>>>>>>> UUIDs? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>> -John >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Mon, May 6, 2019 at 11:49 AM Development <d...@yeralin.net >>>>>>>>>> <mailto:d...@yeralin.net>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hello, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Starting a discussion for KIP-466 adding support for List >>>>>>>>>>>>>>>>>>> Serde. >>>>>>>>>> PR is >>>>>>>>>>>>>>>>>>> created under https://github.com/apache/kafka/pull/6592 < >>>>>>>>>> https://github.com/apache/kafka/pull/6592> < >>>>>>>>>>>>>>>>>>> https://github.com/apache/kafka/pull/6592 < >>>>>>>>>> https://github.com/apache/kafka/pull/6592>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> There are two topics I would like to discuss: >>>>>>>>>>>>>>>>>>> 1. Since type for List serve needs to be declared before >>>>>>>>>>>>>>>>>>> hand, I >>>>>>>>>> could >>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>> create a static method for List Serde under >>>>>>>>>>>>>>>>>>> org.apache.kafka.common.serialization.Serdes. I addressed >>>>>>>>>>>>>>>>>>> it in >>>>>>>>>> the KIP: >>>>>>>>>>>>>>>>>>> P.S. Static method corresponding to ListSerde under >>>>>>>>>>>>>>>>>>> org.apache.kafka.common.serialization.Serdes (something like >>>>>>>>>> static >>>>>>>>>>>>>>>>> public >>>>>>>>>>>>>>>>>>> Serde<List<T>> List() {...} >>>>>>>>>>>>>>>>> inorg.apache.kafka.common.serialization.Serdes) >>>>>>>>>>>>>>>>>>> class cannot be added because type needs to be defined >>>>>>>>>> beforehand. >>>>>>>>>>>>>>>>> That's >>>>>>>>>>>>>>>>>>> why one needs to create List Serde in the following fashion: >>>>>>>>>>>>>>>>>>> new Serdes.ListSerde<String>(Serdes.String(), >>>>>>>>>>>>>>>>>>> Comparator.comparing(String::length)); >>>>>>>>>>>>>>>>>>> (can possibly be simplified by declaring import static >>>>>>>>>>>>>>>>>>> org.apache.kafka.common.serialization.Serdes.ListSerde) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> 2. @miguno Michael G. Noll <https://github.com/miguno < >>>>>>>>>> https://github.com/miguno>> is questioning >>>>>>>>>>>>>>>>>>> whether I need to pass a comparator to ListDeserializer. >>>>>>>>>>>>>>>>>>> This >>>>>>>>>> certainly >>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>> not required. Feel free to add your input: >>>>>>>>>>>>>>>>>>> https://github.com/apache/kafka/pull/6592#discussion_r281152067 >>>>>>>>>> <https://github.com/apache/kafka/pull/6592#discussion_r281152067> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thank you! >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>> Daniyar Yeralin >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On May 6, 2019, at 11:59 AM, Daniyar Yeralin (JIRA) < >>>>>>>>>> j...@apache.org <mailto:j...@apache.org>> >>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Daniyar Yeralin created KAFKA-8326: >>>>>>>>>>>>>>>>>>>> -------------------------------------- >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Summary: Add List<T> Serde >>>>>>>>>>>>>>>>>>>> Key: KAFKA-8326 >>>>>>>>>>>>>>>>>>>> URL: >>>>>>>>>> https://issues.apache.org/jira/browse/KAFKA-8326 < >>>>>>>>>> https://issues.apache.org/jira/browse/KAFKA-8326> >>>>>>>>>>>>>>>>>>>> Project: Kafka >>>>>>>>>>>>>>>>>>>> Issue Type: Improvement >>>>>>>>>>>>>>>>>>>> Components: clients, streams >>>>>>>>>>>>>>>>>>>> Reporter: Daniyar Yeralin >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I propose adding serializers and deserializers for the >>>>>>>>>> java.util.List >>>>>>>>>>>>>>>>>>> class. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I have many use cases where I want to set the key of a >>>>>>>>>>>>>>>>>>>> Kafka >>>>>>>>>> message to >>>>>>>>>>>>>>>>>>> be a UUID. Currently, I need to turn UUIDs into strings or >>>>>>>>>>>>>>>>>>> byte >>>>>>>>>> arrays >>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>> use their associated Serdes, but it would be more >>>>>>>>>>>>>>>>>>> convenient to >>>>>>>>>>>>>>>>> serialize >>>>>>>>>>>>>>>>>>> and deserialize UUIDs directly. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I believe there are many use cases where one would want to >>>>>>>>>>>>>>>>>>>> have >>>>>>>>>> a List >>>>>>>>>>>>>>>>>>> serde. Ex. [ >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>> https://stackoverflow.com/questions/41427174/aggregate-java-objects-in-a-list-with-kafka-streams-dsl-windows >>>>>>>>>> < >>>>>>>>>> https://stackoverflow.com/questions/41427174/aggregate-java-objects-in-a-list-with-kafka-streams-dsl-windows >>>>>>>>>>> >>>>>>>>>>>>>>>>> ], >>>>>>>>>>>>>>>>>>> [ >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>> https://stackoverflow.com/questions/46365884/issue-with-arraylist-serde-in-kafka-streams-api >>>>>>>>>> < >>>>>>>>>> https://stackoverflow.com/questions/46365884/issue-with-arraylist-serde-in-kafka-streams-api >>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ] >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> KIP Link: [ >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-466%3A+Add+support+for+List%3CT%3E+serialization+and+deserialization >>>>>>>>>> < >>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-466%3A+Add+support+for+List%3CT%3E+serialization+and+deserialization >>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ] >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>> This message was sent by Atlassian JIRA >>>>>>>>>>>>>>>>>>>> (v7.6.3#76005) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>> >> >
signature.asc
Description: OpenPGP digital signature