Class: ActiveJob::Locking::Adapters::Redlock

Inherits:
Base
  • Object
show all
Defined in:
lib/activejob/locking/adapters/redlock.rb

Instance Attribute Summary

Attributes inherited from Base

#key, #lock_manager, #lock_token, #options

Instance Method Summary collapse

Methods inherited from Base

#initialize, #refresh_lock!

Constructor Details

This class inherits a constructor from ActiveJob::Locking::Adapters::Base

Instance Method Details

#create_lock_managerObject



7
8
9
10
11
12
13
# File 'lib/activejob/locking/adapters/redlock.rb', line 7

def create_lock_manager
  mapped_options = self.options.adapter_options
  mapped_options[:retry_count] = 2 # Try to get the lock and then try again when timeout is expiring--
  mapped_options[:retry_delay] = self.options.lock_acquire_time * 1000 # convert from seconds to milliseconds

  ::Redlock::Client.new(self.options.hosts, mapped_options)
end

#lockObject



15
16
17
# File 'lib/activejob/locking/adapters/redlock.rb', line 15

def lock
  self.lock_token = self.lock_manager.lock(self.key, self.options.lock_time * 1000)
end

#unlockObject



19
20
21
22
# File 'lib/activejob/locking/adapters/redlock.rb', line 19

def unlock
  self.lock_manager.unlock(self.lock_token)
  self.lock_token = nil
end