Status

Current state: accepted

Discussion thread: here 

Voting thread: here

JIRA: Unable to render Jira issues macro, execution error.

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

Motivation

3.0 gives us the opportunity to make backward-incompatible changes. With that, now is a good time to change the default serde from `byte array` to `null`. This change will allow users to better catch serialization issues from the beginning, as it's likely that they need to be setting a default serde themselves or passing in a serde rather than relying on the byte array default. 

Public Interfaces

Within `StreamsConfig.java`, DEFAULT_KEY_SERDE_CLASS_CONFIG will default to null and DEFAULT_VALUE_SERDE_CLASS_CONFIG will default to null. That means that the following existing methods will return `null` if no default is set, whereas before they returned byte array key/value serde.

StreamsConfig
// Will return null if no default is set through configs
public Serde defaultKeySerde() {
}

// Will return null if no default is set through configs
 public Serde defaultValueSerde() {
}


Proposed Changes

Where the default key and value serde used to be a byte array, it will now be null. Instead of throwing Null Pointer Exceptions, we'll throw a Config Exception to remind the user that they need to set a serde through the default configs or pass one in.

Compatibility, Deprecation, and Migration Plan

  • Users who currently rely on the default serdes being a byte array will need to update their applications to manually set the default serdes to byte array before upgrading to 3.0

Rejected Alternatives


  • No labels