[
https://issues.apache.org/jira/browse/KAFKA-8911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matthias J. Sax reassigned KAFKA-8911:
--------------------------------------
Assignee: Michał
> 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.2#803003)