Module: ConsulStockpile::ConsulLock

Extended by:
ConsulLock
Included in:
ConsulLock
Defined in:
lib/consul_stockpile/consul_lock.rb

Instance Method Summary collapse

Instance Method Details

#with_lock(key:) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/consul_stockpile/consul_lock.rb', line 5

def with_lock(key:)
  sessionid = nil
  locked = false
  sessionid = Diplomat::Session.create(Name: "#{key}.lock")
  locked = Diplomat::Lock.wait_to_acquire(key, sessionid)

  yield
ensure
  if sessionid != nil
    Diplomat::Lock.release(key, sessionid) if locked
    Diplomat::Session.destroy(sessionid)
  end
end