Hey there!

My team and I have run across a bit of a jam in our application where,
given a particular setup, our Kafka Streams application never seems to
start successfully, instead just getting stuck in the REBALANCING state.
We've been able to get the crucial factors that cause this behavior down to
a particular combination of (1) grouping, (2) windowing, (3) aggregating,
and (4) foreign-key joining, with some of those steps specifying Serdes
besides the default.

It's probably more useful to see a minimal example, so there's one here
<https://github.com/ajablonski/streams-issue-demo/blob/master/build.gradle>.
The underlying Kafka Streams version is 2.5.1. The first test should show
the application eventually transition to running state, but it doesn't
within the 30 second timeout I've set. Interestingly, getting rid of the
'Grouped.with' argument to the 'groupBy' function and the
'Materialized.with' in 'aggregate' in the 'StreamsConfiguration' lets the
application transition to "RUNNING", though without the correct Serdes
that's not too valuable.

There might be a cleaner way to organize the particular flow in the toy
example, but is there something fundamentally wrong with the approach laid
out in that application that would cause Streams to be stuck in
REBALANCING? I'd appreciate any advice folks could give!

Thanks!
Alex Jablonski

Reply via email to