From 5465cf7a633cd9795de0efec2636d2c67f0845ad Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Sat, 20 Jan 2024 10:48:42 -0500 Subject: [PATCH] fix: RequestRelease needs to be inside for, but after we check for a non-busy error --- storage/locker.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/storage/locker.go b/storage/locker.go index 2c836c7..5d242ab 100644 --- a/storage/locker.go +++ b/storage/locker.go @@ -52,6 +52,11 @@ func (l *Lock) Lock(ctx context.Context, requestUnlock func()) error { return err } + err = l.lockRecord.RequestRelease(db) + if err != nil { + return err + } + select { case <-ctx.Done(): // Context expired, so we return a timeout @@ -62,11 +67,6 @@ func (l *Lock) Lock(ctx context.Context, requestUnlock func()) error { } } - err := l.lockRecord.RequestRelease(db) - if err != nil { - return err - } - defer func(lockRecord *models.TusLock, db *gorm.DB) { err := lockRecord.Released(db) if err != nil {