Status
Current state: In voting
Discussion thread: here
Vote thread: here
JIRA:
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
Both TimeWindowedSerde and TimeWindowedDeserializer have a default constructor that does not require a window size, causing fatal errors at runtime for some programs.
Public Interfaces
Deprecate the following methods
@Deprecated public TimeWindowedSerde(final Serde<T> inner) { super(new TimeWindowedSerializer<>(inner.serializer()), new TimeWindowedDeserializer<>(inner.deserializer())); } /** * Construct a {@code TimeWindowedSerde} object for the specified inner class type. */ @Deprecated static public <T> Serde<Windowed<T>> timeWindowedSerdeFrom(final Class<T> type) { return new TimeWindowedSerde<>(Serdes.serdeFrom(type)); }
@Deprecated public TimeWindowedDeserializer(final Deserializer<T> inner) { this(inner, Long.MAX_VALUE); }
Proposed Changes
Deprecate constructors in both TimeWindowedDeserializer and WindowedSerdes that don't require a window size. This ensures that the window size would be properly set before encountering any instances where it should be used.
Compatibility, Deprecation, and Migration Plan
Tests that need to be updated:
- WindowKeySchemaTest
- KStreamAggregationIntegrationTest
- WindowedSerdesTest
- TimeWindowedCogroupedKStreamImplTest
Classes that need to be updated: