class Sidekiq::Undertaker::JobDistributor
Attributes
dead_jobs[R]
Public Class Methods
new(dead_jobs)
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 10 def initialize(dead_jobs) @dead_jobs = dead_jobs end
Public Instance Methods
group_by_error_class()
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 18 def group_by_error_class group_by(:error_class) end
group_by_job_class()
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 14 def group_by_job_class group_by(:job_class) end
Private Instance Methods
distribute() { |distribution, dead_job, bucket_name| ... }
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 24 def distribute distribution = init_counters({}, "all") dead_jobs.each do |dead_job| bucket_name = dead_job.bucket_name incr_counters(distribution, "all", bucket_name) yield distribution, dead_job, bucket_name if block_given? end sort_by_total_dead(distribution) end
group_by(attribute)
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 37 def group_by(attribute) distribute do |distribution, dead_job, bucket_name| attr = dead_job.public_send(attribute) init_counters(distribution, attr) unless distribution[attr] incr_counters(distribution, attr, bucket_name) end end
incr_counters(distribution, attr, bucket_name, value = 1)
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 58 def incr_counters(distribution, attr, bucket_name, value = 1) distribution[attr][bucket_name] += value distribution[attr]["total_dead"] += value end
init_counters(distribution, attr)
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 51 def init_counters(distribution, attr) distribution[attr] = {} Bucket.bucket_names.each { |bucket| distribution[attr][bucket] = 0 } distribution[attr]["total_dead"] = 0 distribution end
sort_by_total_dead(distribution)
click to toggle source
# File lib/sidekiq/undertaker/job_distributor.rb, line 45 def sort_by_total_dead(distribution) distribution.map { |k, v| [k, v] }.sort do |x, y| x[1]["total_dead"] <=> y[1]["total_dead"] end.reverse end