Skip to content

Help!

Read below for tips. If you still need help, you can:

You should not email any Karafka committer privately.

Please respect our time and efforts by sticking to one of the options above.

Please consider buying the Pro subscription for additional priority Pro support and extra features.

Reporting problems

When you encounter issues with Karafka, there are several things you can do:

Debugging

Remember that Karafka uses the info log level by default. If you assign it a logger with debug, debug will be used.

Here are a few guidelines that you should follow when trying to create a reproduction script:

  1. Use as few non-default gems as possible to eliminate issues emerging from other libraries.
  2. Try setting the concurrency value to 1 - this will simplify the processing flow.
class KarafkaApp < Karafka::App
  setup do |config|
    config.concurrency = 1
  end
end
  1. Use a single topic with a single partition (so Karafka does not create extensive concurrent jobs).
class KarafkaApp < Karafka::App
  setup do |config|
    # ...
  end

  routes.draw do
    # Disable other topics for debug...
    # topic :shippings do
    #   consumer ShippingsConsumer
    # end

    topic :orders do
      consumer OrdersConsumer
    end
  end
end
  1. If the issue is related to Active Job or Ruby on Rails, try using the latest stable release.
  2. Check the Versions Lifecycle and EOL page to make sure that your Ruby and Ruby on Rails (if used) combination is supported.
  3. Try disabling all Karafka components that may be irrelevant to the issue, like extensive listeners and other hooks.
  4. You can use TTIN signal to print a backtrace of all the Karafka threads if Karafka appears to be hanging or dead. For this to work, the LoggerListener needs to be enabled.
  5. If you are interested/need extensive librdkafka debug info, you can set the kafka debug flag to all or one of the following values: generic, broker, topic, metadata, feature, queue, msg, protocol, cgrp, security, fetch, interceptor, plugin, consumer, admin, eos, mock, assignor, conf, all.
class KarafkaApp < Karafka::App
  setup do |config|
    config.kafka = {
      'bootstrap.servers': '127.0.0.1:9092',
      # other settings...
      debug: 'all'
    }
  end
end