[ https://issues.apache.org/jira/browse/KAFKA-8911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16941391#comment-16941391 ]
ASF GitHub Bot commented on KAFKA-8911: --------------------------------------- bbejeck commented on pull request #7352: KAFKA-8911: Using proper WindowSerdes constructors in their implicit definitions URL: https://github.com/apache/kafka/pull/7352 ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Implicit TimeWindowedSerde creates Serde with null inner serializer > ------------------------------------------------------------------- > > Key: KAFKA-8911 > URL: https://issues.apache.org/jira/browse/KAFKA-8911 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 2.3.0 > Reporter: Michał > Assignee: Michał > Priority: Major > > {{Serdes.scala}} contains an implicit def timeWindowedSerde as below: > > {code:java} > implicit def timeWindowedSerde[T]: WindowedSerdes.TimeWindowedSerde[T] = new > WindowedSerdes.TimeWindowedSerde[T]() > {code} > It creates a new {{TimeWindowedSerde}} without inner serializer, which is a > bug. Even in {{WindowedSerdes.java}} it says that empty constructor is for > reflection. > {code:java} > // Default constructor needed for reflection object creation > public TimeWindowedSerde() { > super(new TimeWindowedSerializer<>(), new TimeWindowedDeserializer<>()); > } > public TimeWindowedSerde(final Serde<T> inner) { > super(new TimeWindowedSerializer<>(inner.serializer()), new > TimeWindowedDeserializer<>(inner.deserializer())); > } > {code} > All above failes for me when I try to implicitly access the right Serde: > {code:java} > private val twSerde = implicitly[TimeWindowedSerde[String]] > {code} > and I have to create the object properly on my own > {code} > private val twSerde = new > WindowedSerdes.TimeWindowedSerde[String](implicitly[Serde[String]]) > {code} > it could be fixed with a proper call in {{Serdes.scala}} > {code} > implicit def timeWindowedSerde[T](implicit tSerde: Serde[T]): > WindowedSerdes.TimeWindowedSerde[T] = > new WindowedSerdes.TimeWindowedSerde[T](tSerde) > {code} > But maybe also the scope of the default constructor for {{TimeWindowedSerde}} > should be changed? > BR, Michał -- This message was sent by Atlassian Jira (v8.3.4#803005)