Browse Source

Fix lock and semaphore timeouts

pull/4346/head
Hamish 6 years ago
parent
commit
9043966efd
  1. 5
      api/lock.go
  2. 5
      api/semaphore.go

5
api/lock.go

@ -181,11 +181,12 @@ WAIT:
// Handle the one-shot mode. // Handle the one-shot mode.
if l.opts.LockTryOnce && attempts > 0 { if l.opts.LockTryOnce && attempts > 0 {
elapsed := time.Since(start) elapsed := time.Since(start)
if elapsed > qOpts.WaitTime { if elapsed > l.opts.LockWaitTime {
return nil, nil return nil, nil
} }
qOpts.WaitTime -= elapsed // Query wait time should not exceed the lock wait time
qOpts.WaitTime = l.opts.LockWaitTime - elapsed
} }
attempts++ attempts++

5
api/semaphore.go

@ -199,11 +199,12 @@ WAIT:
// Handle the one-shot mode. // Handle the one-shot mode.
if s.opts.SemaphoreTryOnce && attempts > 0 { if s.opts.SemaphoreTryOnce && attempts > 0 {
elapsed := time.Since(start) elapsed := time.Since(start)
if elapsed > qOpts.WaitTime { if elapsed > s.opts.SemaphoreWaitTime {
return nil, nil return nil, nil
} }
qOpts.WaitTime -= elapsed // Query wait time should not exceed the semaphore wait time
qOpts.WaitTime = s.opts.SemaphoreWaitTime - elapsed
} }
attempts++ attempts++

Loading…
Cancel
Save