module Que::Locks::JobExtensions

Attributes

exclusive_execution_lock[RW]

Public Instance Methods

enqueue(*args, queue: nil, priority: nil, run_at: nil, job_class: nil, tags: nil, **arg_opts) click to toggle source
Calls superclass method
# File lib/que/locks/job_extensions.rb, line 12
def enqueue(*args, queue: nil, priority: nil, run_at: nil, job_class: nil, tags: nil, **arg_opts)
  if self.exclusive_execution_lock
    args_list = args.clone
    args_list << arg_opts if arg_opts.any?

    if Que::Locks::ExecutionLock.already_enqueued_job_wanting_lock?(self, args_list)
      Que.log(level: :info, event: :skipped_enqueue_due_to_preemptive_lock_check, args: args_list)
    else
      super
    end
  else
    super
  end
end
lock_available?(*args, queue: nil, priority: nil, run_at: nil, job_class: nil, tags: nil, **arg_opts) click to toggle source
# File lib/que/locks/job_extensions.rb, line 5
def lock_available?(*args, queue: nil, priority: nil, run_at: nil, job_class: nil, tags: nil, **arg_opts) # rubocop:disable Lint/UnusedMethodArgument
  args << arg_opts if arg_opts.any?
  return true unless self.exclusive_execution_lock
  return false if Que::Locks::ExecutionLock.already_enqueued_job_wanting_lock?(self, args)
  return Que::Locks::ExecutionLock.can_aquire?(self, args)
end