module ActiveJob::Uniqueness

Constants

VERSION

Public Class Methods

config() click to toggle source
# File lib/active_job/uniqueness.rb, line 26
def config
  @config ||= ActiveJob::Uniqueness::Configuration.new
end
configure() { |config| ... } click to toggle source
# File lib/active_job/uniqueness.rb, line 22
def configure
  yield config
end
lock_manager() click to toggle source
# File lib/active_job/uniqueness.rb, line 30
def lock_manager
  @lock_manager ||= ActiveJob::Uniqueness::LockManager.new(config.redlock_servers, config.redlock_options)
end
test_mode!() click to toggle source
# File lib/active_job/uniqueness.rb, line 38
def test_mode!
  @lock_manager = ActiveJob::Uniqueness::TestLockManager.new
end
unlock!(**args) click to toggle source
# File lib/active_job/uniqueness.rb, line 34
def unlock!(**args)
  lock_manager.delete_locks(ActiveJob::Uniqueness::LockKey.new(**args).wildcard_key)
end
unlock_sidekiq_job!(job_data) click to toggle source
# File lib/active_job/uniqueness/sidekiq_patch.rb, line 8
def self.unlock_sidekiq_job!(job_data)
  return unless job_data['class'] == 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper' # non ActiveJob jobs

  job = ActiveJob::Base.deserialize(job_data.fetch('args').first)

  return unless job.class.lock_strategy_class

  begin
    job.send(:deserialize_arguments_if_needed)
  rescue ActiveJob::DeserializationError
    # Most probably, GlobalID fails to locate AR record (record is deleted)
  else
    ActiveJob::Uniqueness.unlock!(job_class_name: job.class.name, arguments: job.arguments)
  end
end