33 lines
705 B
Ruby
33 lines
705 B
Ruby
# frozen_string_literal: true
|
|
|
|
module EachShardWorker
|
|
extend ActiveSupport::Concern
|
|
include ::Gitlab::Utils::StrongMemoize
|
|
|
|
def each_eligible_shard
|
|
Gitlab::ShardHealthCache.update(eligible_shard_names)
|
|
|
|
eligible_shard_names.each do |shard_name|
|
|
yield shard_name
|
|
end
|
|
end
|
|
|
|
# override when you want to filter out some shards
|
|
def eligible_shard_names
|
|
healthy_shard_names
|
|
end
|
|
|
|
def healthy_shard_names
|
|
strong_memoize(:healthy_shard_names) do
|
|
healthy_ready_shards.map { |result| result.labels[:shard] }
|
|
end
|
|
end
|
|
|
|
def healthy_ready_shards
|
|
ready_shards.select(&:success)
|
|
end
|
|
|
|
def ready_shards
|
|
Gitlab::HealthChecks::GitalyCheck.readiness
|
|
end
|
|
end
|