class AtomicSidekiq::InFlightQueue

Attributes

keymaker[R]

Public Class Methods

new() click to toggle source
# File lib/atomic_sidekiq/in_flight_queue.rb, line 3
def initialize
  @keymaker = InFlightKeymaker.new(AtomicFetch::IN_FLIGHT_KEY_PREFIX)
end

Public Instance Methods

delete_job(jid) click to toggle source
# File lib/atomic_sidekiq/in_flight_queue.rb, line 12
def delete_job(jid)
  job_matcher = keymaker.job_matcher(jid)
  job_keys = retrieve_keys(job_matcher)
  return 0 if job_keys.empty?

  Sidekiq.redis { |conn| conn.del(*job_keys) }
end
list() click to toggle source
# File lib/atomic_sidekiq/in_flight_queue.rb, line 7
def list
  keys = list_keys
  retrieve_jobs(keys)
end

Private Instance Methods

list_keys() click to toggle source
# File lib/atomic_sidekiq/in_flight_queue.rb, line 24
def list_keys
  matcher = keymaker.matcher
  result = []
  it = 0
  loop do
    it, keys = Sidekiq.redis { |conn| conn.scan(it, match: matcher) }
    result.concat(keys)
    it = it.to_i
    break if it.zero?
  end
  result
end
retrieve_jobs(keys) click to toggle source
# File lib/atomic_sidekiq/in_flight_queue.rb, line 37
def retrieve_jobs(keys)
  Sidekiq.redis do |conn|
    keys.map { |key| JSON.parse(conn.get(key)) }
  end
end
retrieve_keys(key_wildcard) click to toggle source
# File lib/atomic_sidekiq/in_flight_queue.rb, line 43
def retrieve_keys(key_wildcard)
  Sidekiq.redis { |conn| conn.keys(key_wildcard) }
end