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