diff --git a/management/server/account.go b/management/server/account.go index b9eb3348d..4fa2728ab 100644 --- a/management/server/account.go +++ b/management/server/account.go @@ -1639,11 +1639,6 @@ func (am *DefaultAccountManager) SyncAndMarkPeer(ctx context.Context, accountID log.WithContext(ctx).Debugf("SyncAndMarkPeer: took %v", time.Since(start)) }() - accountUnlock := am.Store.AcquireReadLockByUID(ctx, accountID) - defer accountUnlock() - peerUnlock := am.Store.AcquireWriteLockByUID(ctx, peerPubKey) - defer peerUnlock() - peer, netMap, postureChecks, err := am.SyncPeer(ctx, types.PeerSync{WireGuardPubKey: peerPubKey, Meta: meta}, accountID) if err != nil { return nil, nil, nil, fmt.Errorf("error syncing peer: %w", err) @@ -1658,18 +1653,12 @@ func (am *DefaultAccountManager) SyncAndMarkPeer(ctx context.Context, accountID } func (am *DefaultAccountManager) OnPeerDisconnected(ctx context.Context, accountID string, peerPubKey string) error { - accountUnlock := am.Store.AcquireReadLockByUID(ctx, accountID) - defer accountUnlock() - peerUnlock := am.Store.AcquireWriteLockByUID(ctx, peerPubKey) - defer peerUnlock() - err := am.MarkPeerConnected(ctx, peerPubKey, false, nil, accountID) if err != nil { log.WithContext(ctx).Warnf("failed marking peer as disconnected %s %v", peerPubKey, err) } return nil - } func (am *DefaultAccountManager) SyncPeerMeta(ctx context.Context, peerPubKey string, meta nbpeer.PeerSystemMeta) error { @@ -1678,12 +1667,6 @@ func (am *DefaultAccountManager) SyncPeerMeta(ctx context.Context, peerPubKey st return err } - unlock := am.Store.AcquireReadLockByUID(ctx, accountID) - defer unlock() - - unlockPeer := am.Store.AcquireWriteLockByUID(ctx, peerPubKey) - defer unlockPeer() - _, _, _, err = am.SyncPeer(ctx, types.PeerSync{WireGuardPubKey: peerPubKey, Meta: meta, UpdateAccountPeers: true}, accountID) if err != nil { return mapError(ctx, err) diff --git a/management/server/peer.go b/management/server/peer.go index 979137e94..aae93e100 100644 --- a/management/server/peer.go +++ b/management/server/peer.go @@ -609,13 +609,6 @@ func (am *DefaultAccountManager) AddPeer(ctx context.Context, setupKey, userID s newPeer.DNSLabel = freeLabel newPeer.IP = freeIP - unlock := am.Store.AcquireReadLockByUID(ctx, accountID) - defer func() { - if unlock != nil { - unlock() - } - }() - err = am.Store.ExecuteInTransaction(ctx, func(transaction store.Store) error { err = transaction.AddPeerToAccount(ctx, newPeer) if err != nil { @@ -667,14 +660,10 @@ func (am *DefaultAccountManager) AddPeer(ctx context.Context, setupKey, userID s return nil }) if err == nil { - unlock() - unlock = nil break } if isUniqueConstraintError(err) { - unlock() - unlock = nil log.WithContext(ctx).WithFields(log.Fields{"dns_label": freeLabel, "ip": freeIP}).Tracef("Failed to add peer in attempt %d, retrying: %v", attempt, err) continue } @@ -833,15 +822,6 @@ func (am *DefaultAccountManager) LoginPeer(ctx context.Context, login types.Peer } } - unlockAccount := am.Store.AcquireReadLockByUID(ctx, accountID) - defer unlockAccount() - unlockPeer := am.Store.AcquireWriteLockByUID(ctx, login.WireGuardPubKey) - defer func() { - if unlockPeer != nil { - unlockPeer() - } - }() - var peer *nbpeer.Peer var updateRemotePeers bool var isRequiresApproval bool @@ -922,9 +902,6 @@ func (am *DefaultAccountManager) LoginPeer(ctx context.Context, login types.Peer return nil, nil, nil, err } - unlockPeer() - unlockPeer = nil - if updateRemotePeers || isStatusChanged || (isPeerUpdated && len(postureChecks) > 0) { am.BufferUpdateAccountPeers(ctx, accountID) } diff --git a/management/server/store/sql_store.go b/management/server/store/sql_store.go index 64f80776b..3408558a9 100644 --- a/management/server/store/sql_store.go +++ b/management/server/store/sql_store.go @@ -163,25 +163,6 @@ func (s *SqlStore) AcquireWriteLockByUID(ctx context.Context, uniqueID string) ( return unlock } -// AcquireReadLockByUID acquires an ID lock for writing to a resource and returns a function that releases the lock -func (s *SqlStore) AcquireReadLockByUID(ctx context.Context, uniqueID string) (unlock func()) { - log.WithContext(ctx).Tracef("acquiring read lock for ID %s", uniqueID) - - startWait := time.Now() - value, _ := s.resourceLocks.LoadOrStore(uniqueID, &sync.RWMutex{}) - mtx := value.(*sync.RWMutex) - mtx.RLock() - log.WithContext(ctx).Tracef("waiting to acquire read lock for ID %s in %v", uniqueID, time.Since(startWait)) - startHold := time.Now() - - unlock = func() { - mtx.RUnlock() - log.WithContext(ctx).Tracef("released read lock for ID %s in %v", uniqueID, time.Since(startHold)) - } - - return unlock -} - // Deprecated: Full account operations are no longer supported func (s *SqlStore) SaveAccount(ctx context.Context, account *types.Account) error { start := time.Now() diff --git a/management/server/store/store.go b/management/server/store/store.go index 9e0c04853..8a10772a1 100644 --- a/management/server/store/store.go +++ b/management/server/store/store.go @@ -170,8 +170,6 @@ type Store interface { // AcquireWriteLockByUID should attempt to acquire a lock for write purposes and return a function that releases the lock AcquireWriteLockByUID(ctx context.Context, uniqueID string) func() - // AcquireReadLockByUID should attempt to acquire lock for read purposes and return a function that releases the lock - AcquireReadLockByUID(ctx context.Context, uniqueID string) func() // AcquireGlobalLock should attempt to acquire a global lock and return a function that releases the lock AcquireGlobalLock(ctx context.Context) func()