Your expectation and understanding how GlobalKTables work is correct.

If you can reproduce the issue in an IDE, set a breakpoint in
`GlobalStreamThread#pollAndUpdate()` to see if data is fetched from the
brokers.


-Matthias


On 6/26/19 7:09 AM, Imre Gábor wrote:
> Hi,
> 
> I am new to Kafka and observed a strange behavior. (I am using Kafka through 
> the spring-kafka library)
> 
> I think I misunderstand something about the "liveness" of the data in a 
> global table.
> I thought if I define and materialize a GlobalKTable at the startup of my 
> application, and messages arrive later to the underlying topic, the data in 
> the store are automatically updated.
> i.e. if I have a method that queries the store of the table, it will see the 
> most up-to-date data. (With a bit of latency of course.)
> However, it seems not to be the case:
> 
> 
> 1.       My application defines a GlobalKTable over a topic, materialized 
> with a name and serializers passed.
> 
> 2.       I have a business logic method that calls store() method with the 
> name of this global table, and tries to get a value by key.
> 
> 3.       Next, I wrote a test case, that starts the application, and I send a 
> message with a producer to the appropriate topic, and I expect I can get it 
> by its key from the global table's store.
> 
> However, it returns null. I can see the message in the topic so it is surely 
> delivered.
> 
> 4.       If I iterate through the store via store.all() before calling 
> store.get(key), the KeyValue is there with the appropriate key! However, 
> store.get(key) still returns null.
> 
> 5.       I implemented hashCode and equals for my key class appropriately, so 
> it cannot be the problem
> 
> 6.       Also, it is a not about a small latency, because if I wait about a 
> minute, still cannot get the data.
> 
> 7.       If I modify my test case so that I do not send a test message 
> (because there is one in the topic already), and rerun the test (which starts 
> the application and defined the global table),
> 
> the value is correctly found by key. (I guess the message from the topic is 
> read when the table is created.)
> 
> Do you have any idea what am I missing?
> 
> Best regards
> 
> Gabor
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to