[ https://issues.apache.org/jira/browse/KAFKA-4750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16354546#comment-16354546 ]
Guozhang Wang commented on KAFKA-4750: -------------------------------------- As a summary of this resolution: {code} Here is the new rule for handling nulls: * in the interface store, put(key, null) are handled normally and value serde applied to null. * in the inner most store, null bytes after serialization will always be treated as deletes. * in the inner most store, range queries returning iterators should never return null bytes. * in the interface store, if null bytes get returned in get(key), serde will be avoided and null object will be returned. {code} > KeyValueIterator returns null values > ------------------------------------ > > Key: KAFKA-4750 > URL: https://issues.apache.org/jira/browse/KAFKA-4750 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 0.10.1.1, 0.10.2.1, 0.11.0.0 > Reporter: Michal Borowiecki > Assignee: Evgeny Veretennikov > Priority: Major > Labels: newbie > Fix For: 1.1.0 > > Attachments: DeleteTest.java > > > The API for ReadOnlyKeyValueStore.range method promises the returned iterator > will not return null values. However, after upgrading from 0.10.0.0 to > 0.10.1.1 we found null values are returned causing NPEs on our side. > I found this happens after removing entries from the store and I found > resemblance to SAMZA-94 defect. The problem seems to be as it was there, when > deleting entries and having a serializer that does not return null when null > is passed in, the state store doesn't actually delete that key/value pair but > the iterator will return null value for that key. > When I modified our serilizer to return null when null is passed in, the > problem went away. However, I believe this should be fixed in kafka streams, > perhaps with a similar approach as SAMZA-94. -- This message was sent by Atlassian JIRA (v7.6.3#76005)