Current state: accepted
Discussion thread: here
Voting thread: here
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
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.
Within `StreamsConfig.java`, DEFAULT_KEY_SERDE_CLASS_CONFIG will default to
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.
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