Ralph Matthias Debusmann created KAFKA-13164:
------------------------------------------------

             Summary: State store is attached to wrong node in the Kafka 
Streams topology
                 Key: KAFKA-13164
                 URL: https://issues.apache.org/jira/browse/KAFKA-13164
             Project: Kafka
          Issue Type: Bug
          Components: streams
    Affects Versions: 2.8.0
         Environment: local development (MacOS Big Sur 11.4)
            Reporter: Ralph Matthias Debusmann
         Attachments: 1.jpg, 3.jpg

Hi,

mjsax and me noticed a bug where a state store is attached to the wrong node in 
the Kafka Streams topology.

The issue arised when I tried to read a topic into a KTable, then continued 
with a mapValues(), and then joined this KTable with a KStream, like so:
 
var kTable = this.streamsBuilder.table(<topic>).mapValues(<mapValues function>);
 
and then later:
 
var joinedKStream = kstream.leftJoin(kTable, <leftJoin function>);
 
The join didn't work, and neither did it work when I added Materialized.as() to 
mapValues(), like so:
var kTable = this.streamsBuilder.table(<topic>).mapValues(<mapValues function>, 
*Materialized.as(<some name>)*);
 
 Interestingly, I could get the join to work, when I first read the topic into 
a *KStream*, then continued with the mapValues(), then turned the KStream into 
a KTable, and then joined the KTable with the other KStream, like so:
 
var kTable = this.streamsBuilder.stream(<topic>).mapValues(<mapValues 
function>).toTable();
 
(the join worked the same as above)
 
When mjsax and me had a look on the topology, we could see that in the former, 
not working code, the state store (required for the join) is attached to the 
pre-final "KTABLE-SOURCE", and not the final "KTABLE-MAPVALUES" node (see 
attachment "1.jpg"). In the working code, the state store is (correctly) 
attached to the final "KSTREAM-TOTABLE" node (see attachment "3.jpg").
 
Best regards,
xdgrulez
 
 
 



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

Reply via email to