module Que::Locks::ExecutionLock

Public Class Methods

already_enqueued_job_wanting_lock?(klass, args) click to toggle source
# File lib/que/locks/execution_lock.rb, line 18
def already_enqueued_job_wanting_lock?(klass, args)
  args_string = Que.serialize_json(args)
  values = Que.execute(:args_already_enqueued, [klass.name, args_string]).first
  values[:count] != 0
end
aquire!(key) click to toggle source
# File lib/que/locks/execution_lock.rb, line 44
def aquire!(key)
  result = Que.execute(:try_aquire_execution_lock, [key]).first
  result[:locked]
end
can_aquire?(klass, args) click to toggle source
# File lib/que/locks/execution_lock.rb, line 24
def can_aquire?(klass, args)
  can_aquire_key?(lock_key(klass, args))
end
can_aquire_key?(key) click to toggle source
# File lib/que/locks/execution_lock.rb, line 28
def can_aquire_key?(key)
  result = false
  begin
    result = aquire!(key)
  ensure
    if result
      release!(key)
    end
  end
  result
end
lock_key(klass, args) click to toggle source
# File lib/que/locks/execution_lock.rb, line 40
def lock_key(klass, args)
  XXhash.xxh32(klass.name + ":" + Que.serialize_json(args), 42) / 2
end
release!(key) click to toggle source
# File lib/que/locks/execution_lock.rb, line 49
def release!(key)
  Que.execute(:release_execution_lock, [key])
end