class SidekiqUniqueJobs::LockTimeout

Calculates timeout and expiration

@author Mikael Henriksson <mikael@mhenrixon.com>

Attributes

item[R]

@!attribute [r] item

@return [Hash] the Sidekiq job hash

Public Class Methods

calculate(item) click to toggle source

Calculates the timeout for a Sidekiq job

@param [Hash] item sidekiq job hash

@return [Integer] timeout in seconds

# File lib/sidekiq_unique_jobs/lock_timeout.rb, line 19
def self.calculate(item)
  new(item).calculate
end
new(item) click to toggle source

@param [Hash] item the Sidekiq job hash @option item [Integer, nil] :lock_ttl the configured lock expiration @option item [Integer, nil] :lock_timeout the configured lock timeout @option item [String] :class the class of the sidekiq worker @option item [Float] :at the unix time the job is scheduled at

# File lib/sidekiq_unique_jobs/lock_timeout.rb, line 32
def initialize(item)
  @item         = item
  @worker_class = item[CLASS]
end

Public Instance Methods

calculate() click to toggle source

Finds a lock timeout in either of

default worker options, {default_lock_timeout} or provided worker_options

@return [Integer, nil]

# File lib/sidekiq_unique_jobs/lock_timeout.rb, line 44
def calculate
  timeout = default_worker_options[LOCK_TIMEOUT]
  timeout = default_lock_timeout if default_lock_timeout
  timeout = worker_options[LOCK_TIMEOUT] if worker_options.key?(LOCK_TIMEOUT)
  timeout
end
default_lock_timeout() click to toggle source

The configured default_lock_timeout @see SidekiqUniqueJobs::Config#lock_timeout

@return [Integer, nil]

# File lib/sidekiq_unique_jobs/lock_timeout.rb, line 58
def default_lock_timeout
  SidekiqUniqueJobs.config.lock_timeout
end