Module: Gitlab::SidekiqConfig::CliMethods

Extended by:
CliMethods
Included in:
Gitlab::SidekiqConfig, CliMethods
Defined in:
lib/gitlab/sidekiq_config/cli_methods.rb

Constant Summary collapse

QUEUE_CONFIG_PATHS =

The file names are misleading. Those files contain the metadata of the workers. They should be renamed to all_workers instead. gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1018

begin
  result = %w[app/workers/all_queues.yml]
  result << 'ee/app/workers/all_queues.yml' if Gitlab.ee?
  result << 'jh/app/workers/all_queues.yml' if Gitlab.jh?
  result
end.freeze

Instance Method Summary collapse

Instance Method Details

#clear_memoization!Object



59
60
61
62
63
# File 'lib/gitlab/sidekiq_config/cli_methods.rb', line 59

def clear_memoization!
  if instance_variable_defined?(:@worker_metadatas)
    remove_instance_variable(:@worker_metadatas)
  end
end

#expand_queues(queues, all_queues = self.worker_queues) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/gitlab/sidekiq_config/cli_methods.rb', line 40

def expand_queues(queues, all_queues = self.worker_queues)
  return [] if queues.empty?

  queues_set = all_queues.to_set

  queues.flat_map do |queue|
    [queue, *queues_set.grep(/\A#{queue}:/)]
  end
end

#query_queues(query_string, worker_metadatas) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/gitlab/sidekiq_config/cli_methods.rb', line 50

def query_queues(query_string, worker_metadatas)
  matcher = SidekiqConfig::WorkerMatcher.new(query_string)
  selected_metadatas = worker_metadatas.select do ||
    matcher.match?()
  end

  worker_names(selected_metadatas)
end

#worker_metadatas(rails_path = Rails.root.to_s) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/gitlab/sidekiq_config/cli_methods.rb', line 25

def worker_metadatas(rails_path = Rails.root.to_s)
  @worker_metadatas ||= {}

  @worker_metadatas[rails_path] ||= QUEUE_CONFIG_PATHS.flat_map do |path|
    full_path = File.join(rails_path, path)

    File.exist?(full_path) ? YAML.load_file(full_path) : []
  end
end

#worker_queues(rails_path = Rails.root.to_s) ⇒ Object

rubocop:enable Gitlab/ModuleWithInstanceVariables



36
37
38
# File 'lib/gitlab/sidekiq_config/cli_methods.rb', line 36

def worker_queues(rails_path = Rails.root.to_s)
  worker_names(worker_metadatas(rails_path))
end