module Sidekiq::LockableJob::MultiLockService

Constants

REDIS_PREFIX_KEY

Public Class Methods

handle_locked_by(keys, worker_instance:, job:) click to toggle source
# File lib/sidekiq/lockable_job/multi_lock_service.rb, line 21
def self.handle_locked_by(keys, worker_instance:, job:)
  keys = [keys] unless keys.nil? || keys.is_a?(Array)
  keys&.each do |key|
    raise LockedJobError.new("Locked by #{key}") if locked?(key)
  end
  # job is not locked and should be processed
  false
end
lock(key) click to toggle source
# File lib/sidekiq/lockable_job/multi_lock_service.rb, line 9
def self.lock(key)
  redis.incr(redis_key(key))
end
locked?(key) click to toggle source
# File lib/sidekiq/lockable_job/multi_lock_service.rb, line 17
def self.locked?(key)
  (redis.get(redis_key(key))&.to_i || 0) > 0
end
redis() click to toggle source
# File lib/sidekiq/lockable_job/multi_lock_service.rb, line 34
def self.redis
  $redis
end
redis_key(key) click to toggle source
# File lib/sidekiq/lockable_job/multi_lock_service.rb, line 30
def self.redis_key(key)
  "#{REDIS_PREFIX_KEY}:#{key}"
end
unlock(key) click to toggle source
# File lib/sidekiq/lockable_job/multi_lock_service.rb, line 13
def self.unlock(key)
  redis.decr(redis_key(key))
end