You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Leah Thomas (Jira)" <ji...@apache.org> on 2021/02/02 14:00:08 UTC

[jira] [Resolved] (KAFKA-9649) Remove/Warn on use of TimeWindowedSerde with no specified window size

     [ https://issues.apache.org/jira/browse/KAFKA-9649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Leah Thomas resolved KAFKA-9649.
--------------------------------
    Fix Version/s: 2.8.0
       Resolution: Fixed

> Remove/Warn on use of TimeWindowedSerde with no specified window size
> ---------------------------------------------------------------------
>
>                 Key: KAFKA-9649
>                 URL: https://issues.apache.org/jira/browse/KAFKA-9649
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Sören Henning
>            Assignee: Leah Thomas
>            Priority: Major
>              Labels: kip
>             Fix For: 2.8.0
>
>
> The API of the [{{TimeWindowedSerde}}|https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/kstream/WindowedSerdes.java] promotes its construction without specifying a window size:
> {noformat}
> public TimeWindowedSerde(final Serde<T> inner)
> {noformat}
> While code using this constructor looks absolutely clean, it leads to fatal errors at runtime, which turned out to be very hard to discover.
> The reason for these error can be found in the construction of the [{{TimeWindowedDeserializer}}|https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/kstream/TimeWindowedDeserializer.java], which is created via:
> {noformat}
> // TODO: fix this part as last bits of KAFKA-4468
> public TimeWindowedDeserializer(final Deserializer<T> inner) {
>   this(inner, Long.MAX_VALUE);
> }
> {noformat}
> The TODO comment suggests that this issue is (or at least was) already known.
> We suggest to either remove the {{TimeWindowedSerde(final Serde<T> inner)}} constructor or at least to warn when using it (if required for backwards compatiblity). The ideal solution of course would be to get the window size from some externally provided context. However, I expect this to be difficult to realize. Same applies also the {{TimeWindowedDeserializer(final Deserializer<T> inner)}} constructor.
> A further minor suggestion in this context: As now most Kafka Streams time declarations use {{Duration}} s instead of long-encoded milliseconds, I suggest to allow specifying window sizes with a {{Duration}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)