[
https://issues.apache.org/jira/browse/KAFKA-4750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16062575#comment-16062575
]
Evgeny Veretennikov commented on KAFKA-4750:
--------------------------------------------
If we invoke {{store.put(key, value)}}, and serdes returns null for value,
shouldn't we throw NPE instead of deleting key from store? It seems
counter-intuitive, that value here can be null, since null indicates, that no
value found:
{code:java}
Object value = ???; // some value serialized to null by serde
store.put(key, value);
Object value = store.get(key); // returns null, that seems like no value found
{code}
Throwing exception inside {{put()}} prevents from potential data loss.
By the way, why does {{KeyValueStore.put()}} method allows value to be null?
> 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.11.0.0, 0.10.2.1
> Reporter: Michal Borowiecki
> Assignee: Evgeny Veretennikov
> Labels: newbie
> 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
(v6.4.14#64029)