Paul Snively commented on KAFKA-9517:


Thanks so much for your prompt attention, attention to detail, and pointers to 
the relevant issues and PRs. I'm glad to hear they've been merged and look 
forward to the 2.4.1 release when the last blocker is resolved. We'll continue 
pushing on our specific use-cases for the remainder of the week and let you 
know ASAP if anything continues to arise.

> KTable Joins Without Materialized Argument Yield Results That Further Joins 
> NPE On
> ----------------------------------------------------------------------------------
>                 Key: KAFKA-9517
>                 URL: https://issues.apache.org/jira/browse/KAFKA-9517
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.4.0
>            Reporter: Paul Snively
>            Assignee: John Roesler
>            Priority: Blocker
>             Fix For: 2.5.0, 2.4.1
>         Attachments: test.tar.xz
> The `KTable` API implemented [[here||#L842-L844]] 
> [https://github.com/apache/kafka/blob/2.4.0/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableImpl.java#L842-L844]
>  []|#L842-L844]] calls `doJoinOnForeignKey` with an argument of 
> `Materialized.with(null, null)`, as apparently do several other APIs. As the 
> comment spanning [these lines|#L1098-L1099]] makes clear, the result is a 
> `KTable` whose `valueSerde` (as a `KTableImpl`) is `null`. Therefore, 
> attempts to `join` etc. on the resulting `KTable` fail with a 
> `NullPointerException`.
> While there is an obvious workaround—explicitly construct the required 
> `Materialized` and use the APIs that take it as an argument—I have to admit I 
> find the existence of public APIs with this sort of bug, particularly when 
> the bug is literally documented as a comment in the source code, astonishing 
> to the point of incredulity. It calls the quality and trustworthiness of 
> Kafka Streams into serious question, and if a resolution is not forthcoming 
> within a week, we will be left with no other option but to consider technical 
> alternatives.

This message was sent by Atlassian Jira

Reply via email to