Sha256: a7852df8356ad86487830c88b4cca0eacf3bdee61ccfb117d3d19ff1f8c92017

Contents?: true

Size: 1.44 KB

Versions: 19

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module Karafka
  class Cli
    class Topics < Cli::Base
      # Increases number of partitions on topics that have less partitions than defined
      # Will **not** create topics if missing.
      class Repartition < Base
        # @return [Boolean] true if anything was repartitioned, otherwise false
        def call
          any_repartitioned = false

          existing_partitions = existing_topics.map do |topic|
            [topic.fetch(:topic_name), topic.fetch(:partition_count)]
          end.to_h

          declaratives_routing_topics.each do |topic|
            name = topic.name

            desired_count = topic.config.partitions
            existing_count = existing_partitions.fetch(name, false)

            if existing_count && existing_count < desired_count
              puts "Increasing number of partitions to #{desired_count} on topic #{name}..."
              Admin.create_partitions(name, desired_count)
              change = desired_count - existing_count
              puts "#{green('Created')} #{change} additional partitions on topic #{name}."
              any_repartitioned = true
            elsif existing_count
              puts "#{yellow('Skipping')} because topic #{name} has #{existing_count} partitions."
            else
              puts "#{yellow('Skipping')} because topic #{name} does not exist."
            end
          end

          any_repartitioned
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
karafka-2.4.17 lib/karafka/cli/topics/repartition.rb
karafka-2.4.16 lib/karafka/cli/topics/repartition.rb
karafka-2.4.15 lib/karafka/cli/topics/repartition.rb
karafka-2.4.14 lib/karafka/cli/topics/repartition.rb
karafka-2.4.13 lib/karafka/cli/topics/repartition.rb
karafka-2.4.12 lib/karafka/cli/topics/repartition.rb
karafka-2.4.11 lib/karafka/cli/topics/repartition.rb
karafka-2.4.10 lib/karafka/cli/topics/repartition.rb
karafka-2.4.9 lib/karafka/cli/topics/repartition.rb
karafka-2.4.8 lib/karafka/cli/topics/repartition.rb
karafka-2.4.7 lib/karafka/cli/topics/repartition.rb
karafka-2.4.6 lib/karafka/cli/topics/repartition.rb
karafka-2.4.5 lib/karafka/cli/topics/repartition.rb
karafka-2.4.4 lib/karafka/cli/topics/repartition.rb
karafka-2.4.3 lib/karafka/cli/topics/repartition.rb
karafka-2.4.0 lib/karafka/cli/topics/repartition.rb
karafka-2.4.0.rc1 lib/karafka/cli/topics/repartition.rb
karafka-2.4.0.beta2 lib/karafka/cli/topics/repartition.rb
karafka-2.4.0.beta1 lib/karafka/cli/topics/repartition.rb