module Resque::Scheduler::Locking

Public Instance Methods

master?() click to toggle source
# File lib/resque/scheduler/locking.rb, line 65
def master?
  master_lock.acquire! || master_lock.locked?
end
master_lock() click to toggle source
# File lib/resque/scheduler/locking.rb, line 57
def master_lock
  @master_lock ||= build_master_lock
end
release_master_lock() click to toggle source
# File lib/resque/scheduler/locking.rb, line 77
def release_master_lock
  master_lock.release
rescue *INTERMITTENT_ERRORS
  @master_lock = nil
end
release_master_lock!() click to toggle source
# File lib/resque/scheduler/locking.rb, line 69
def release_master_lock!
  warn "#{self}\#release_master_lock! is deprecated because it does " \
       "not respect lock ownership. Use #{self}\#release_master_lock " \
       "instead (at #{caller.first}"

  master_lock.release!
end
supports_lua?() click to toggle source
# File lib/resque/scheduler/locking.rb, line 61
def supports_lua?
  redis_master_version >= 2.5
end

Private Instance Methods

build_master_lock() click to toggle source
# File lib/resque/scheduler/locking.rb, line 85
def build_master_lock
  if supports_lua?
    Resque::Scheduler::Lock::Resilient.new(master_lock_key)
  else
    Resque::Scheduler::Lock::Basic.new(master_lock_key)
  end
end
master_lock_key() click to toggle source
# File lib/resque/scheduler/locking.rb, line 93
def master_lock_key
  lock_prefix = ENV['RESQUE_SCHEDULER_MASTER_LOCK_PREFIX'] || ''
  lock_prefix += ':' if lock_prefix != ''
  "#{Resque.redis.namespace}:#{lock_prefix}resque_scheduler_master_lock"
end
redis_master_version() click to toggle source
# File lib/resque/scheduler/locking.rb, line 99
def redis_master_version
  Resque.data_store.redis.info['redis_version'].to_f
end