@@ -182,7 +182,7 @@ func (c *Client) AcquireContext(ctx context.Context, name string, opts ...LockOp
182
182
if err := ctx .Err (); err != nil {
183
183
return nil , ErrNotAcquired
184
184
}
185
- err := c .retry (ctx , func () error { return c .tryAcquire (ctx , l ) })
185
+ err := c .retry (func () error { return c .tryAcquire (ctx , l ) })
186
186
switch {
187
187
case l .failIfLocked && errors .Is (err , ErrNotAcquired ):
188
188
c .log .Debug ("not acquired, exit" )
@@ -303,7 +303,7 @@ func (c *Client) Release(l *Lock) error {
303
303
func (c * Client ) ReleaseContext (ctx context.Context , l * Lock ) error {
304
304
l .heartbeatCancel ()
305
305
l .heartbeatWG .Wait ()
306
- err := c .retry (ctx , func () error { return c .storeRelease (ctx , l ) })
306
+ err := c .retry (func () error { return c .storeRelease (ctx , l ) })
307
307
return err
308
308
}
309
309
@@ -377,7 +377,7 @@ func (c *Client) SendHeartbeat(ctx context.Context, l *Lock) error {
377
377
if l .isReleased {
378
378
return ErrLockAlreadyReleased
379
379
}
380
- err := c .retry (ctx , func () error { return c .storeHeartbeat (ctx , l ) })
380
+ err := c .retry (func () error { return c .storeHeartbeat (ctx , l ) })
381
381
if err != nil {
382
382
l .isReleased = true
383
383
return fmt .Errorf ("cannot send heartbeat (%v): %w" , l .name , err )
@@ -444,7 +444,7 @@ func (c *Client) GetDataContext(ctx context.Context, name string) ([]byte, error
444
444
// holding it first.
445
445
func (c * Client ) GetContext (ctx context.Context , name string ) (* Lock , error ) {
446
446
var l * Lock
447
- err := c .retry (ctx , func () error {
447
+ err := c .retry (func () error {
448
448
var err error
449
449
l , err = c .getLock (ctx , name )
450
450
return err
@@ -486,19 +486,17 @@ func (c *Client) getNextRVN(ctx context.Context, db *sql.DB) (int64, error) {
486
486
487
487
const maxRetries = 1024
488
488
489
- func (c * Client ) retry (ctx context.Context , f func () error ) error {
490
- retryPeriod := c .heartbeatFrequency
491
- if retryPeriod == 0 {
492
- retryPeriod = c .leaseDuration
493
- }
489
+ func (c * Client ) retry (f func () error ) error {
494
490
var err error
495
491
for i := 0 ; i < maxRetries ; i ++ {
496
492
err = f ()
497
493
if failedPrecondition := (& FailedPreconditionError {}); err == nil || ! errors .As (err , & failedPrecondition ) {
498
494
break
499
495
}
500
496
c .log .Debug ("bad transaction, retrying: %v" , err )
501
- waitFor (ctx , retryPeriod )
497
+ if isContextError (err ) {
498
+ break
499
+ }
502
500
}
503
501
return err
504
502
}
@@ -511,7 +509,7 @@ func (c *Client) GetAllLocks() ([]*ReadOnlyLock, error) {
511
509
// GetAllLocksContext returns all known locks in a read-only fashion.
512
510
func (c * Client ) GetAllLocksContext (ctx context.Context ) ([]* ReadOnlyLock , error ) {
513
511
var locks []* ReadOnlyLock
514
- err := c .retry (ctx , func () error {
512
+ err := c .retry (func () error {
515
513
var err error
516
514
locks , err = c .getAllLocks (ctx )
517
515
return err
0 commit comments