module SimpleMutex::SidekiqSupport::JobMixin

Public Class Methods

included(klass) click to toggle source
# File lib/simple_mutex/sidekiq_support/job_mixin.rb, line 6
def self.included(klass)
  klass.extend(ClassMethods)
end

Public Instance Methods

process_locking_error(error) click to toggle source

override for custom processing

# File lib/simple_mutex/sidekiq_support/job_mixin.rb, line 60
def process_locking_error(error)
  raise error unless self.class.skip_locking_error?
end
with_redlock(args = []) { || ... } click to toggle source
# File lib/simple_mutex/sidekiq_support/job_mixin.rb, line 44
def with_redlock(args = [], &block)
  return yield unless self.class.locking?

  options = {
    params:           args,
    lock_with_params: self.class.lock_with_params?,
  }

  options[:expires_in] = self.class.job_timeout unless self.class.job_timeout.nil?

  ::SimpleMutex::SidekiqSupport::JobWrapper.new(self, **options).with_redlock(&block)
rescue SimpleMutex::Mutex::LockError => error
  process_locking_error(error)
end