diff --git a/weed/util/lock_table.go b/weed/util/lock_table.go index bf3da7c37..efc4114e7 100644 --- a/weed/util/lock_table.go +++ b/weed/util/lock_table.go @@ -132,6 +132,12 @@ func (lt *LockTable[T]) ReleaseLock(key T, lock *ActiveLock) { } } + if lock.lockType == ExclusiveLock { + entry.activeExclusiveLockOwnerCount-- + } else { + entry.activeSharedLockOwnerCount-- + } + // If there are no waiters, release the lock if len(entry.waiters) == 0 && entry.activeExclusiveLockOwnerCount <= 0 && entry.activeSharedLockOwnerCount <= 0 { delete(lt.locks, key) @@ -146,11 +152,6 @@ func (lt *LockTable[T]) ReleaseLock(key T, lock *ActiveLock) { fmt.Printf("\n") } } - if lock.lockType == ExclusiveLock { - entry.activeExclusiveLockOwnerCount-- - } else { - entry.activeSharedLockOwnerCount-- - } // Notify the next waiter entry.cond.Broadcast()