To add more context here:
a NPE will be triggered in RecordConverters#ByteBuffer.allocate(8 + rawValue.length) if the raw value with record is null. A scenario you could reproduce is like:
- Having a source KTable (timestampedKeyValueStore) reads in tombstone records where the value field is null. Note that you need to turn off stream level cache, otherwise the null value will not be forwarded.
- Shutdown the application, and clear local state stores.
- Restart the application before changelog topic starts compaction. If we are "lucky", the tombstone record will trigger null pointer exception during restoration when we try to extract raw value length.