Tommy Becker created KAFKA-13197:
------------------------------------

             Summary: KStream-GlobalKTable join semantics don't match 
documentation
                 Key: KAFKA-13197
                 URL: https://issues.apache.org/jira/browse/KAFKA-13197
             Project: Kafka
          Issue Type: Bug
    Affects Versions: 2.7.0
            Reporter: Tommy Becker


As part of KAFKA-10277, the behavior of KStream-GlobalKTable joins was changed. 
It appears the change was intended to merely relax a requirement but it 
actually broke backwards compatibility. Although it does allow {{null}} keys 
and values in the KStream to be joined, it now excludes {{null}} results of the 
{{KeyValueMapper}}. We have an application which can return {{null}} from the 
{{KeyValueMapper}} for non-null keys in the KStream, and relies on these nulls 
being passed to the {{ValueJoiner}}. Indeed the javadoc still explicitly says 
this is done:
{quote}If a KStream input record key or value is null the record will not be 
included in the join operation and thus no output record will be added to the 
resulting KStream.
 If keyValueMapper returns null implying no match exists, a null value will be 
provided to ValueJoiner.
{quote}
Both these statements are incorrect.

I think the new behavior is worse than the previous/documented behavior. It 
feels more reasonable to have a non-null stream record map to a null join key 
(our use-case is event-enhancement where the incoming record doesn't have the 
join field), than the reverse.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to