class SidekiqUniqueRetries::Lock

Constants

HASH_KEY

Attributes

job_id[R]
unique_digest[R]

Public Class Methods

new(item, adapter) click to toggle source
# File lib/sidekiq_unique_retries/lock.rb, line 10
def initialize(item, adapter)
  @job_id = adapter.job_id(item)
  @unique_digest = adapter.unique_digest(item)
end

Public Instance Methods

acquire() click to toggle source
# File lib/sidekiq_unique_retries/lock.rb, line 15
def acquire
  lock_id = get_lock

  if lock_id
    job_id == lock_id
  else
    set_lock(job_id)
    true
  end
end
release() click to toggle source
# File lib/sidekiq_unique_retries/lock.rb, line 26
def release
  remove_lock
  true
end

Private Instance Methods

get_lock() click to toggle source
# File lib/sidekiq_unique_retries/lock.rb, line 33
def get_lock
  Sidekiq.redis do |conn|
    conn.hget HASH_KEY, unique_digest
  end
end
remove_lock() click to toggle source
# File lib/sidekiq_unique_retries/lock.rb, line 45
def remove_lock
  Sidekiq.redis do |conn|
    conn.hdel HASH_KEY, unique_digest
  end
end
set_lock(value) click to toggle source
# File lib/sidekiq_unique_retries/lock.rb, line 39
def set_lock(value)
  Sidekiq.redis do |conn|
    conn.hset HASH_KEY, unique_digest, value
  end
end