Commit f746aadb authored by Sean McGivern's avatar Sean McGivern

Merge branch 'log-sidekiq-enqueue-stats' into 'master'

Log details about Sidekiq scheduled set processing

See merge request gitlab-org/gitlab!72231
parents 3093df29 22a242fe
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
module Gitlab module Gitlab
class SidekiqEnq class SidekiqEnq
def enqueue_jobs(now = Time.now.to_f.to_s, sorted_sets = Sidekiq::Scheduled::SETS) def enqueue_jobs(now = Time.now.to_f.to_s, sorted_sets = Sidekiq::Scheduled::SETS)
start_time = ::Gitlab::Metrics::System.monotonic_time
jobs = redundant_jobs = 0
Sidekiq.logger.info(message: 'Enqueuing scheduled jobs', status: 'start')
# A job's "score" in Redis is the time at which it should be processed. # A job's "score" in Redis is the time at which it should be processed.
# Just check Redis for the set of jobs with a timestamp before now. # Just check Redis for the set of jobs with a timestamp before now.
Sidekiq.redis do |conn| Sidekiq.redis do |conn|
...@@ -25,12 +29,17 @@ module Gitlab ...@@ -25,12 +29,17 @@ module Gitlab
# the queue, it's because another process already popped it so we can move on to the # the queue, it's because another process already popped it so we can move on to the
# next one. # next one.
if conn.zrem(sorted_set, job) if conn.zrem(sorted_set, job)
jobs += 1
Sidekiq::Client.push(Sidekiq.load_json(job)) Sidekiq::Client.push(Sidekiq.load_json(job))
Sidekiq.logger.debug { "enqueued #{sorted_set}: #{job}" } else
redundant_jobs += 1
end end
end end
end end
end end
end_time = ::Gitlab::Metrics::System.monotonic_time
Sidekiq.logger.info(message: 'Enqueuing scheduled jobs', status: 'done', jobs_count: jobs, redundant_jobs_count: redundant_jobs, duration_s: end_time - start_time)
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment