aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/util/lock_table.go11
1 files changed, 6 insertions, 5 deletions
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()