Skip to content

Commit 5e273c1

Browse files
[management] Remove store locks 3 (#4390)
1 parent 968d956 commit 5e273c1

File tree

5 files changed

+0
-59
lines changed

5 files changed

+0
-59
lines changed

management/server/account.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -492,8 +492,6 @@ func (am *DefaultAccountManager) peerLoginExpirationJob(ctx context.Context, acc
492492
ctx := context.WithValue(ctx, nbcontext.AccountIDKey, accountID)
493493
//nolint
494494
ctx = context.WithValue(ctx, hook.ExecutionContextKey, fmt.Sprintf("%s-PEER-EXPIRATION", hook.SystemSource))
495-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
496-
defer unlock()
497495

498496
expiredPeers, err := am.getExpiredPeers(ctx, accountID)
499497
if err != nil {
@@ -529,9 +527,6 @@ func (am *DefaultAccountManager) schedulePeerLoginExpiration(ctx context.Context
529527
// peerInactivityExpirationJob marks login expired for all inactive peers and returns the minimum duration in which the next peer of the account will expire by inactivity if found
530528
func (am *DefaultAccountManager) peerInactivityExpirationJob(ctx context.Context, accountID string) func() (time.Duration, bool) {
531529
return func() (time.Duration, bool) {
532-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
533-
defer unlock()
534-
535530
inactivePeers, err := am.getInactivePeers(ctx, accountID)
536531
if err != nil {
537532
log.WithContext(ctx).Errorf("failed getting inactive peers for account %s", accountID)
@@ -672,8 +667,6 @@ func (am *DefaultAccountManager) isCacheCold(ctx context.Context, store cacheSto
672667

673668
// DeleteAccount deletes an account and all its users from local store and from the remote IDP if the requester is an admin and account owner
674669
func (am *DefaultAccountManager) DeleteAccount(ctx context.Context, accountID, userID string) error {
675-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
676-
defer unlock()
677670
account, err := am.Store.GetAccount(ctx, accountID)
678671
if err != nil {
679672
return err
@@ -1345,13 +1338,6 @@ func (am *DefaultAccountManager) SyncUserJWTGroups(ctx context.Context, userAuth
13451338
return nil
13461339
}
13471340

1348-
unlockAccount := am.Store.AcquireWriteLockByUID(ctx, userAuth.AccountId)
1349-
defer func() {
1350-
if unlockAccount != nil {
1351-
unlockAccount()
1352-
}
1353-
}()
1354-
13551341
var addNewGroups []string
13561342
var removeOldGroups []string
13571343
var hasChanges bool
@@ -1414,8 +1400,6 @@ func (am *DefaultAccountManager) SyncUserJWTGroups(ctx context.Context, userAuth
14141400
return fmt.Errorf("error incrementing network serial: %w", err)
14151401
}
14161402
}
1417-
unlockAccount()
1418-
unlockAccount = nil
14191403

14201404
return nil
14211405
})

management/server/peer.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,6 @@ func (am *DefaultAccountManager) UpdatePeer(ctx context.Context, accountID, user
332332

333333
// DeletePeer removes peer from the account by its IP
334334
func (am *DefaultAccountManager) DeletePeer(ctx context.Context, accountID, peerID, userID string) error {
335-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
336-
defer unlock()
337-
338335
allowed, err := am.permissionsManager.ValidateUserPermissions(ctx, accountID, userID, modules.Peers, operations.Delete)
339336
if err != nil {
340337
return status.NewPermissionValidationError(err)

management/server/store/sql_store.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ const (
5151
// SqlStore represents an account storage backed by a Sql DB persisted to disk
5252
type SqlStore struct {
5353
db *gorm.DB
54-
resourceLocks sync.Map
5554
globalAccountLock sync.Mutex
5655
metrics telemetry.AppMetrics
5756
installationPK int
@@ -144,25 +143,6 @@ func (s *SqlStore) AcquireGlobalLock(ctx context.Context) (unlock func()) {
144143
return unlock
145144
}
146145

147-
// AcquireWriteLockByUID acquires an ID lock for writing to a resource and returns a function that releases the lock
148-
func (s *SqlStore) AcquireWriteLockByUID(ctx context.Context, uniqueID string) (unlock func()) {
149-
log.WithContext(ctx).Tracef("acquiring write lock for ID %s", uniqueID)
150-
151-
startWait := time.Now()
152-
value, _ := s.resourceLocks.LoadOrStore(uniqueID, &sync.RWMutex{})
153-
mtx := value.(*sync.RWMutex)
154-
mtx.Lock()
155-
log.WithContext(ctx).Tracef("waiting to acquire write lock for ID %s in %v", uniqueID, time.Since(startWait))
156-
startHold := time.Now()
157-
158-
unlock = func() {
159-
mtx.Unlock()
160-
log.WithContext(ctx).Tracef("released write lock for ID %s in %v", uniqueID, time.Since(startHold))
161-
}
162-
163-
return unlock
164-
}
165-
166146
// Deprecated: Full account operations are no longer supported
167147
func (s *SqlStore) SaveAccount(ctx context.Context, account *types.Account) error {
168148
start := time.Now()

management/server/store/store.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ type Store interface {
168168
GetInstallationID() string
169169
SaveInstallationID(ctx context.Context, ID string) error
170170

171-
// AcquireWriteLockByUID should attempt to acquire a lock for write purposes and return a function that releases the lock
172-
AcquireWriteLockByUID(ctx context.Context, uniqueID string) func()
173171
// AcquireGlobalLock should attempt to acquire a global lock and return a function that releases the lock
174172
AcquireGlobalLock(ctx context.Context) func()
175173

management/server/user.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ func (am *DefaultAccountManager) CreateUser(ctx context.Context, accountID, user
7373

7474
// inviteNewUser Invites a USer to a given account and creates reference in datastore
7575
func (am *DefaultAccountManager) inviteNewUser(ctx context.Context, accountID, userID string, invite *types.UserInfo) (*types.UserInfo, error) {
76-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
77-
defer unlock()
78-
7976
if am.idpManager == nil {
8077
return nil, status.Errorf(status.PreconditionFailed, "IdP manager must be enabled to send user invites")
8178
}
@@ -224,9 +221,6 @@ func (am *DefaultAccountManager) DeleteUser(ctx context.Context, accountID, init
224221
return status.Errorf(status.InvalidArgument, "self deletion is not allowed")
225222
}
226223

227-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
228-
defer unlock()
229-
230224
initiatorUser, err := am.Store.GetUserByUserID(ctx, store.LockingStrengthNone, initiatorUserID)
231225
if err != nil {
232226
return err
@@ -282,9 +276,6 @@ func (am *DefaultAccountManager) DeleteUser(ctx context.Context, accountID, init
282276

283277
// InviteUser resend invitations to users who haven't activated their accounts prior to the expiration period.
284278
func (am *DefaultAccountManager) InviteUser(ctx context.Context, accountID string, initiatorUserID string, targetUserID string) error {
285-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
286-
defer unlock()
287-
288279
if am.idpManager == nil {
289280
return status.Errorf(status.PreconditionFailed, "IdP manager must be enabled to send user invites")
290281
}
@@ -325,9 +316,6 @@ func (am *DefaultAccountManager) InviteUser(ctx context.Context, accountID strin
325316

326317
// CreatePAT creates a new PAT for the given user
327318
func (am *DefaultAccountManager) CreatePAT(ctx context.Context, accountID string, initiatorUserID string, targetUserID string, tokenName string, expiresIn int) (*types.PersonalAccessTokenGenerated, error) {
328-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
329-
defer unlock()
330-
331319
if tokenName == "" {
332320
return nil, status.Errorf(status.InvalidArgument, "token name can't be empty")
333321
}
@@ -376,9 +364,6 @@ func (am *DefaultAccountManager) CreatePAT(ctx context.Context, accountID string
376364

377365
// DeletePAT deletes a specific PAT from a user
378366
func (am *DefaultAccountManager) DeletePAT(ctx context.Context, accountID string, initiatorUserID string, targetUserID string, tokenID string) error {
379-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
380-
defer unlock()
381-
382367
allowed, err := am.permissionsManager.ValidateUserPermissions(ctx, accountID, initiatorUserID, modules.Pats, operations.Delete)
383368
if err != nil {
384369
return status.NewPermissionValidationError(err)
@@ -478,9 +463,6 @@ func (am *DefaultAccountManager) SaveUser(ctx context.Context, accountID, initia
478463
// SaveOrAddUser updates the given user. If addIfNotExists is set to true it will add user when no exist
479464
// Only User.AutoGroups, User.Role, and User.Blocked fields are allowed to be updated for now.
480465
func (am *DefaultAccountManager) SaveOrAddUser(ctx context.Context, accountID, initiatorUserID string, update *types.User, addIfNotExists bool) (*types.UserInfo, error) {
481-
unlock := am.Store.AcquireWriteLockByUID(ctx, accountID)
482-
defer unlock()
483-
484466
updatedUsers, err := am.SaveOrAddUsers(ctx, accountID, initiatorUserID, []*types.User{update}, addIfNotExists)
485467
if err != nil {
486468
return nil, err

0 commit comments

Comments
 (0)