You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Matthias J. Sax (Jira)" <ji...@apache.org> on 2023/08/11 18:48:00 UTC
[jira] [Resolved] (KAFKA-13197) KStream-GlobalKTable join semantics don't match documentation
[ https://issues.apache.org/jira/browse/KAFKA-13197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias J. Sax resolved KAFKA-13197.
-------------------------------------
Fix Version/s: 3.6.0
3.5.2
Resolution: Fixed
> 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
> Components: documentation, streams
> Affects Versions: 2.7.0
> Reporter: Tommy Becker
> Assignee: Florin Akermann
> Priority: Major
> Fix For: 3.6.0, 3.5.2
>
>
> 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.20.10#820010)