Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titleStreamsConfig
linenumberstrue
/** <code>default.window.size.ms</code> */
public static final String DEFAULT_WINDOW_SIZE_MS_CONFIG = "window.size.ms";
private static final String DEFAULT_WINDOW_SIZE_MS_DOC = "Passes window size to the deserializer in order to calculate window end times. Default is Long.MAX_VALUE";


Deprecate the following methods

...

Code Block
languagescala
titleSerdes
// Log error message and pass through to underlying deserializer 
implicit def timeWindowedSerde[T](implicit tSerde: Serde[T]): WindowedSerdes.TimeWindowedSerde[T] =
  new WindowedSerdes.TimeWindowedSerde[T](tSerde)


Proposed Changes

Add default. window.size.ms to the StreamsConfigs class to ensure that the desired window size is set when the consumer creates the TimeWindowedDeserializer instance. The default value for this config is Long. MAX_VALUE. This is relevant for consuming TimeWindowed records directly, which is helpful when testing windowed aggregations. Without this change, all windows will have a size and end time of Long.MAX_VALUE. Users can either set the window size through the config or set the window size through the constructor. To help enforce this, the window.size.ms will not have a default value.

Additionally, 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. When these are deprecated, the timeWindowedSerde implicit in Serdes.scala will be updated to log an errors error message explaining that this implicit should no longer be used. To keep backwards compatibility, this implicit won't be deprecated but will pass through to the deserializer.

...