Skip to content

Upgrading to Karafka 2.3

Pro & Enterprise Upgrade Support

If you're gearing up to upgrade to the latest Karafka version and are a Pro or Enterprise user, remember you've got a dedicated lifeline! Reach out via the dedicated Slack channel for direct support to ensure everything has been covered.

As always, please make sure you have upgraded to the most recent version of 2.2 before upgrading to 2.3.

Also, remember to read and apply our standard upgrade procedures.

Web UI Upgrade

Karafka 2.3 works only with Web UI >= 0.8.0. Please follow the Web UI upgrade procedure.

Shutdown Procedure Updates

Thanks to recent advancements in librdkafka and rdkafka-ruby, shutdown patches needed in previous versions were removed in 2.3,, and the whole shutdown procedure has been improved. While we saw only performance and stability improvements in those areas, we would like to highlight this change.

Potential CLI Inclusions/Exclusions Inconsistency Fix

While this change has already been introduced in 2.2 as a fix, we wanted to make you aware that all the CLI inclusion and exclusion options, such as --include-consumer-groups or --exclude-consumer-groups expect a list of arguments separated by a comma and NOT by space:

BAD:

# Wrong, topics separated with a space
bundle exec karafka server --exclude-topics topic1 topic2

GOOD:

# Good, topics separated with a comma
bundle exec karafka server --exclude-topics topic1,topic2

This change is a regression introduced because of the removal of the Thor gem.

concurrent-ruby Removal

Karafka no longer relies on concurrent-ruby. If you've indirectly relied on it being included in your applications, you must add it as a direct dependency yourself.

Kubernetes::LivenessListener No Longer Starts until Karafka Server Starts

Before Karafka 2.3.0, Kubernetes::LivenessListener would start immediately after initialization. This is why it was recommended to create it conditionally by using an external flag similar to this one:

if ENV['KARAFKA_LIVENESS'] == true
  listener = ::Karafka::Instrumentation::Vendors::Kubernetes::LivenessListener.new(
    # config goes here...
  )

  Karafka.monitor.subscribe(listener)
end

Starting from 2.3, such a flag is no longer needed as the listener begins listening on the desired port only when the associated Karafka server process is started. The listener will not bind itself to processes other than the Karafka server.