aboutsummaryrefslogtreecommitdiff
path: root/weed/cluster/lock_manager
diff options
context:
space:
mode:
Diffstat (limited to 'weed/cluster/lock_manager')
-rw-r--r--weed/cluster/lock_manager/lock_manager.go16
1 files changed, 8 insertions, 8 deletions
diff --git a/weed/cluster/lock_manager/lock_manager.go b/weed/cluster/lock_manager/lock_manager.go
index 49b951dd9..acf5b93da 100644
--- a/weed/cluster/lock_manager/lock_manager.go
+++ b/weed/cluster/lock_manager/lock_manager.go
@@ -4,6 +4,7 @@ import (
"fmt"
"github.com/google/uuid"
"github.com/puzpuzpuz/xsync/v2"
+ "github.com/seaweedfs/seaweedfs/weed/glog"
"time"
)
@@ -11,6 +12,7 @@ var LockErrorNonEmptyTokenOnNewLock = fmt.Errorf("lock: non-empty token on a new
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")
+var LockNotFound = fmt.Errorf("lock not found")
// LockManager local lock manager, used by distributed lock manager
type LockManager struct {
@@ -138,13 +140,11 @@ func (lm *LockManager) InsertLock(path string, expiredAtNs int64, token string,
}
func (lm *LockManager) GetLockOwner(key string) (owner string, err error) {
- lm.locks.Range(func(k string, lock *Lock) bool {
- if k == key && lock != nil {
- owner = lock.Owner
- return false
- }
- return true
- })
+ lock, _ := lm.locks.Load(key)
+ if lock != nil {
+ return lock.Owner, nil
+ }
+ glog.V(0).Infof("get lock %s %+v", key, lock)
+ err = LockNotFound
return
-
}