From 713c0341bec9a2dcb0b0343d0c48aef24787b43b Mon Sep 17 00:00:00 2001 From: bcmmbaga Date: Fri, 19 Jul 2024 14:09:33 +0300 Subject: [PATCH] Optimize update of account peers on jwt groups sync --- management/server/account.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/management/server/account.go b/management/server/account.go index 558de6fbb..1c457915e 100644 --- a/management/server/account.go +++ b/management/server/account.go @@ -1723,13 +1723,22 @@ func (am *DefaultAccountManager) GetAccountFromToken(ctx context.Context, claims removeOldGroups := difference(oldGroups, user.AutoGroups) account.UserGroupsAddToPeers(claims.UserId, addNewGroups...) account.UserGroupsRemoveFromPeers(claims.UserId, removeOldGroups...) - account.Network.IncSerial() + + updateAccountPeers := areGroupChangesAffectPeers(account, addNewGroups) || areGroupChangesAffectPeers(account, removeOldGroups) + if updateAccountPeers { + account.Network.IncSerial() + } + if err := am.Store.SaveAccount(ctx, account); err != nil { log.WithContext(ctx).Errorf("failed to save account: %v", err) } else { log.WithContext(ctx).Tracef("user %s: JWT group membership changed, updating account peers", claims.UserId) - am.updateAccountPeers(ctx, account) + + if updateAccountPeers { + am.updateAccountPeers(ctx, account) + } unlock() + alreadyUnlocked = true for _, g := range addNewGroups { if group := account.GetGroup(g); group != nil {