How does KafkaStreams determine whether a GlobalKTable is fully populated while bootstrapping?

Viewed 1257

The topic I use to create a GlobalKTable is very active. In the documentation of KStream-GlobalKTable join I read

The GlobalKTable is fully bootstrapped upon (re)start of a KafkaStreams instance, which means the table is fully populated with all the data in the underlying topic that is available at the time of the startup. The actual data processing begins only once the bootstrapping has completed.

How does KafkaStreams determine whether all data is read? Does it read all the messages with a timestamp below the KafkaStreams instance bootstrap time? Or does it use some kind of timeout?

Either way, I guess we better get the retention and log compaction of the underlying topic right or a restart might take a while.

1 Answers
Related