Class: Sidekiq::QueueMetrics::Storage

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq_queue_metrics/storage.rb

Constant Summary collapse

FAILED_JOBS_KEY =
'failed_jobs'.freeze

Class Method Summary collapse

Class Method Details

.add_failed_job(job, max_count = Sidekiq::QueueMetrics.max_recently_failed_jobs) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sidekiq_queue_metrics/storage.rb', line 18

def add_failed_job(job, max_count = Sidekiq::QueueMetrics.max_recently_failed_jobs)
  Sidekiq.redis_pool.with do |conn|
    queue = job['queue']
    failed_jobs = JSON.parse(conn.get("#{FAILED_JOBS_KEY}:#{queue}") || '[]')

    if failed_jobs.size >= max_count
      (failed_jobs.size - max_count + 1).times {failed_jobs.shift}
    end

    conn.set("#{FAILED_JOBS_KEY}:#{queue}", (failed_jobs << job).to_json)
  end
end

.failed_jobs(queue) ⇒ Object



31
32
33
34
35
# File 'lib/sidekiq_queue_metrics/storage.rb', line 31

def failed_jobs(queue)
  Sidekiq.redis_pool.with do |conn|
    JSON.parse(conn.get("#{FAILED_JOBS_KEY}:#{queue}") || '[]')
  end
end

.get_stats(key = stats_key) ⇒ Object



12
13
14
15
16
# File 'lib/sidekiq_queue_metrics/storage.rb', line 12

def get_stats(key = stats_key)
  Sidekiq.redis_pool.with do |conn|
    conn.get(key)
  end
end

.set_stats(key = stats_key, value) ⇒ Object



6
7
8
9
10
# File 'lib/sidekiq_queue_metrics/storage.rb', line 6

def set_stats(key = stats_key, value)
  Sidekiq.redis_pool.with do |conn|
    conn.set(key, value)
  end
end

.stats_keyObject



37
38
39
# File 'lib/sidekiq_queue_metrics/storage.rb', line 37

def stats_key
  Sidekiq::QueueMetrics.storage_location || 'queue_stats'
end