Hi there,

In our company, we are running multiple Kafka Streams app that are deployed
in a red/black fashion. A deployment means starting a new set of hosts, run
them in parallel with the old hosts until they pass the health check, and
then scale down the old hosts. This approach works very well as we can
deploy application changes without any downtime.

However, as far as I understand, there is no way we can run a new and old
version in parallel if they don’t consume from the same set of topics.
Consumers will try to rebalance tasks between the two different application
version, causing errors like the one below:

Uncaught exception: Thread xyz-StreamThread-1 stopped unexpectedly after
Assigned partition foo-1 for non-subscribed topic regex pattern;
subscription pattern is bar

To mitigate the problem, we have so far scaled down the old cluster to 0
instances before deploying the new application if we’re adding or removing
input topics. However, this causes service downtime which we no longer can
accept.

I’m curious to hear if anyone are experiencing the same issues, or if
anyone have any thoughts or opinions? Are we doing something wrong, or is
this something that can be solved by the Kafka Consumer client?

Thanks,

Håkon

Reply via email to