Module: AplLocker

Extended by:
ScLock
Defined in:
lib/apl-library/apl_locker.rb

Defined Under Namespace

Modules: NS, RES

Class Method Summary collapse

Class Method Details

.locked_block(namespace, resource, params, wait_time = 1000.0, retry_count = 0, &block) ⇒ Object

hold lock only for the ‘block’ and delete from database once done.



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/apl-library/apl_locker.rb', line 19

def self.locked_block namespace, resource, params, wait_time=1000.0, retry_count=0, &block
  error = nil
  begin
    lock(namespace, resource, params, nil, 600, wait_time, retry_count, &block)
  rescue Exception => e
    error = e
    # delete lock and raise it again
    resource_lock = ScLock::Lock.find_by_resource_name_and_key("#{namespace}-#{resource}", params.sort.to_s)
    resource_lock.delete if resource_lock
  end

  raise error if error
end