Class: Cloudtasker::UniqueJob::Lock::UntilExecuted

Inherits:
BaseLock
  • Object
show all
Defined in:
lib/cloudtasker/unique_job/lock/until_executed.rb

Overview

Conflict if any other job with the same args is scheduled or moved to execution while the first job is pending or executing.

Instance Attribute Summary

Attributes inherited from BaseLock

#job

Instance Method Summary collapse

Methods inherited from BaseLock

#conflict_instance, #default_conflict_strategy, #initialize, #options

Constructor Details

This class inherits a constructor from Cloudtasker::UniqueJob::Lock::BaseLock

Instance Method Details

#execute(&block) ⇒ Object

Acquire a lock for the job and trigger a conflict if the lock could not be acquired.



24
25
26
27
28
29
30
31
32
# File 'lib/cloudtasker/unique_job/lock/until_executed.rb', line 24

def execute(&block)
  job.lock!
  yield
rescue LockError
  conflict_instance.on_execute(&block)
ensure
  # Unlock the job on any error to avoid deadlocks.
  job.unlock!
end

#schedule(&block) ⇒ Object

Acquire a lock for the job and trigger a conflict if the lock could not be acquired.



13
14
15
16
17
18
# File 'lib/cloudtasker/unique_job/lock/until_executed.rb', line 13

def schedule(&block)
  job.lock!
  yield
rescue LockError
  conflict_instance.on_schedule(&block)
end