Status
Current state: accepted
Discussion thread: here
Voting thread: here
JIRA:
-
KAFKA-9559Getting issue details...
STATUS
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.
// 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