aboutsummaryrefslogtreecommitdiff
path: root/weed/cluster/lock_manager/lock_manager.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/cluster/lock_manager/lock_manager.go')
-rw-r--r--weed/cluster/lock_manager/lock_manager.go13
1 files changed, 9 insertions, 4 deletions
diff --git a/weed/cluster/lock_manager/lock_manager.go b/weed/cluster/lock_manager/lock_manager.go
index 57fb34819..2c2ebe387 100644
--- a/weed/cluster/lock_manager/lock_manager.go
+++ b/weed/cluster/lock_manager/lock_manager.go
@@ -7,6 +7,11 @@ import (
"time"
)
+var LockErrorNonEmptyTokenOnNewLock = fmt.Errorf("lock: non-empty token on a new lock")
+var LockErrorNonEmptyTokenOnExpiredLock = fmt.Errorf("lock: non-empty token on an expired lock")
+var LockErrorTokenMismatch = fmt.Errorf("lock: token mismatch")
+var UnlockErrorTokenMismatch = fmt.Errorf("unlock: token mismatch")
+
// LockManager lock manager
type LockManager struct {
locks *xsync.MapOf[string, *Lock]
@@ -31,7 +36,7 @@ func (lm *LockManager) Lock(path string, expiredAtNs int64, token string) (renew
if oldValue.ExpiredAtNs > 0 && oldValue.ExpiredAtNs < time.Now().UnixNano() {
// lock is expired, set to a new lock
if token != "" {
- err = fmt.Errorf("lock: non-empty token on an expired lock")
+ err = LockErrorNonEmptyTokenOnExpiredLock
return nil, false
} else {
// new lock
@@ -45,7 +50,7 @@ func (lm *LockManager) Lock(path string, expiredAtNs int64, token string) (renew
renewToken = uuid.New().String()
return &Lock{Token: renewToken, ExpiredAtNs: expiredAtNs}, false
} else {
- err = fmt.Errorf("lock: token mismatch")
+ err = LockErrorTokenMismatch
return oldValue, false
}
} else {
@@ -54,7 +59,7 @@ func (lm *LockManager) Lock(path string, expiredAtNs int64, token string) (renew
renewToken = uuid.New().String()
return &Lock{Token: renewToken, ExpiredAtNs: expiredAtNs}, false
} else {
- err = fmt.Errorf("lock: non-empty token on a new lock")
+ err = LockErrorNonEmptyTokenOnNewLock
return nil, false
}
}
@@ -79,7 +84,7 @@ func (lm *LockManager) Unlock(path string, token string) (isUnlocked bool, err e
return oldValue, false
} else {
isUnlocked = false
- err = fmt.Errorf("unlock: token mismatch")
+ err = UnlockErrorTokenMismatch
return oldValue, false
}
} else {