Module: Que::Locks

Defined in:
lib/que/locks.rb,
lib/que/locks/railtie.rb,
lib/que/locks/version.rb,
lib/que/locks/job_extensions.rb,
lib/que/locks/lock_middleware.rb,
lib/que/locks/active_job_extensions.rb

Defined Under Namespace

Modules: ActiveJobExtensions, ExecutionLock, JSONExtensions, JobExtensions Classes: Error, Railtie

Constant Summary collapse

VERSION =
"0.4.1".freeze
LockMiddleware =
->(job, &block) {
  if job.class.exclusive_execution_lock
    args = job.que_attrs[:args]
    lock_key = ExecutionLock.lock_key(job.class, args)
    if ExecutionLock.acquire!(lock_key)
      begin
        block.call
      ensure
        ExecutionLock.release!(lock_key)
      end
    else
      Que.log(level: :info, event: :skipped_execution_due_to_lock, args: args, job_class: job.class.name)
    end
  else
    block.call
  end

  nil
}