diff --git a/management/server/account.go b/management/server/account.go index bbcd926e4..f217eadb3 100644 --- a/management/server/account.go +++ b/management/server/account.go @@ -342,13 +342,17 @@ func (am *DefaultAccountManager) UpdateAccountSettings(ctx context.Context, acco } } + if err = transaction.SaveAccountSettings(ctx, accountID, newSettings); err != nil { + return err + } + if updateAccountPeers || groupsUpdated { if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { return err } } - return transaction.SaveAccountSettings(ctx, accountID, newSettings) + return nil }) if err != nil { return nil, err diff --git a/management/server/dns.go b/management/server/dns.go index 12aa6e21c..f6f0201d3 100644 --- a/management/server/dns.go +++ b/management/server/dns.go @@ -113,11 +113,11 @@ func (am *DefaultAccountManager) SaveDNSSettings(ctx context.Context, accountID events := am.prepareDNSSettingsEvents(ctx, transaction, accountID, userID, addedGroups, removedGroups) eventsToStore = append(eventsToStore, events...) - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.SaveDNSSettings(ctx, accountID, dnsSettingsToSave); err != nil { return err } - return transaction.SaveDNSSettings(ctx, accountID, dnsSettingsToSave) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err diff --git a/management/server/group.go b/management/server/group.go index f6c7a8dc8..86bc0d8a0 100644 --- a/management/server/group.go +++ b/management/server/group.go @@ -93,10 +93,6 @@ func (am *DefaultAccountManager) CreateGroup(ctx context.Context, accountID, use return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { - return err - } - if err := transaction.CreateGroup(ctx, newGroup); err != nil { return status.Errorf(status.Internal, "failed to create group: %v", err) } @@ -106,7 +102,8 @@ func (am *DefaultAccountManager) CreateGroup(ctx context.Context, accountID, use return status.Errorf(status.Internal, "failed to add peer %s to group %s: %v", peerID, newGroup.ID, err) } } - return nil + + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -170,11 +167,11 @@ func (am *DefaultAccountManager) UpdateGroup(ctx context.Context, accountID, use return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.UpdateGroup(ctx, newGroup); err != nil { return err } - return transaction.UpdateGroup(ctx, newGroup) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -228,11 +225,11 @@ func (am *DefaultAccountManager) CreateGroups(ctx context.Context, accountID, us return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.CreateGroups(ctx, accountID, groupsToSave); err != nil { return err } - return transaction.CreateGroups(ctx, accountID, groupsToSave) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -286,11 +283,11 @@ func (am *DefaultAccountManager) UpdateGroups(ctx context.Context, accountID, us return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.UpdateGroups(ctx, accountID, groupsToSave); err != nil { return err } - return transaction.UpdateGroups(ctx, accountID, groupsToSave) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -415,11 +412,11 @@ func (am *DefaultAccountManager) DeleteGroups(ctx context.Context, accountID, us deletedGroups = append(deletedGroups, group) } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.DeleteGroups(ctx, accountID, groupIDsToDelete); err != nil { return err } - return transaction.DeleteGroups(ctx, accountID, groupIDsToDelete) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -443,11 +440,11 @@ func (am *DefaultAccountManager) GroupAddPeer(ctx context.Context, accountID, gr return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.AddPeerToGroup(ctx, accountID, peerID, groupID); err != nil { return err } - return transaction.AddPeerToGroup(ctx, accountID, peerID, groupID) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -481,11 +478,11 @@ func (am *DefaultAccountManager) GroupAddResource(ctx context.Context, accountID return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.UpdateGroup(ctx, group); err != nil { return err } - return transaction.UpdateGroup(ctx, group) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -509,11 +506,11 @@ func (am *DefaultAccountManager) GroupDeletePeer(ctx context.Context, accountID, return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.RemovePeerFromGroup(ctx, peerID, groupID); err != nil { return err } - return transaction.RemovePeerFromGroup(ctx, peerID, groupID) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -547,11 +544,11 @@ func (am *DefaultAccountManager) GroupDeleteResource(ctx context.Context, accoun return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.UpdateGroup(ctx, group); err != nil { return err } - return transaction.UpdateGroup(ctx, group) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err diff --git a/management/server/nameserver.go b/management/server/nameserver.go index 68a48b20e..f278e1761 100644 --- a/management/server/nameserver.go +++ b/management/server/nameserver.go @@ -70,11 +70,11 @@ func (am *DefaultAccountManager) CreateNameServerGroup(ctx context.Context, acco return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.SaveNameServerGroup(ctx, newNSGroup); err != nil { return err } - return transaction.SaveNameServerGroup(ctx, newNSGroup) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return nil, err @@ -121,11 +121,11 @@ func (am *DefaultAccountManager) SaveNameServerGroup(ctx context.Context, accoun return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.SaveNameServerGroup(ctx, nsGroupToSave); err != nil { return err } - return transaction.SaveNameServerGroup(ctx, nsGroupToSave) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -164,11 +164,11 @@ func (am *DefaultAccountManager) DeleteNameServerGroup(ctx context.Context, acco return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.DeleteNameServerGroup(ctx, accountID, nsGroupID); err != nil { return err } - return transaction.DeleteNameServerGroup(ctx, accountID, nsGroupID) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err diff --git a/management/server/networks/manager.go b/management/server/networks/manager.go index 89a2aa5a6..b6706ca45 100644 --- a/management/server/networks/manager.go +++ b/management/server/networks/manager.go @@ -158,15 +158,15 @@ func (m *managerImpl) DeleteNetwork(ctx context.Context, accountID, userID, netw return fmt.Errorf("failed to delete network: %w", err) } + eventsToStore = append(eventsToStore, func() { + m.accountManager.StoreEvent(ctx, userID, networkID, accountID, activity.NetworkDeleted, network.EventMeta()) + }) + err = transaction.IncrementNetworkSerial(ctx, accountID) if err != nil { return fmt.Errorf("failed to increment network serial: %w", err) } - eventsToStore = append(eventsToStore, func() { - m.accountManager.StoreEvent(ctx, userID, networkID, accountID, activity.NetworkDeleted, network.EventMeta()) - }) - return nil }) if err != nil { diff --git a/management/server/peer.go b/management/server/peer.go index 5ae321b00..8af71cbd2 100644 --- a/management/server/peer.go +++ b/management/server/peer.go @@ -354,7 +354,7 @@ func (am *DefaultAccountManager) DeletePeer(ctx context.Context, accountID, peer var eventsToStore []func() err = am.Store.ExecuteInTransaction(ctx, func(transaction store.Store) error { - peer, err = transaction.GetPeerByID(ctx, store.LockingStrengthUpdate, accountID, peerID) + peer, err = transaction.GetPeerByID(ctx, store.LockingStrengthNone, accountID, peerID) if err != nil { return err } @@ -1527,7 +1527,7 @@ func deletePeers(ctx context.Context, am *DefaultAccountManager, transaction sto } dnsDomain := am.GetDNSDomain(settings) - network, err := transaction.GetAccountNetwork(ctx, store.LockingStrengthShare, accountID) + network, err := transaction.GetAccountNetwork(ctx, store.LockingStrengthNone, accountID) if err != nil { return nil, err } diff --git a/management/server/policy.go b/management/server/policy.go index a27635b9f..312fd53b2 100644 --- a/management/server/policy.go +++ b/management/server/policy.go @@ -58,17 +58,17 @@ func (am *DefaultAccountManager) SavePolicy(ctx context.Context, accountID, user return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { - return err - } - saveFunc := transaction.CreatePolicy if isUpdate { action = activity.PolicyUpdated saveFunc = transaction.SavePolicy } - return saveFunc(ctx, policy) + if err = saveFunc(ctx, policy); err != nil { + return err + } + + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return nil, err @@ -107,11 +107,11 @@ func (am *DefaultAccountManager) DeletePolicy(ctx context.Context, accountID, po return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.DeletePolicy(ctx, accountID, policyID); err != nil { return err } - return transaction.DeletePolicy(ctx, accountID, policyID) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err diff --git a/management/server/posture_checks.go b/management/server/posture_checks.go index 133d131bb..943f2a970 100644 --- a/management/server/posture_checks.go +++ b/management/server/posture_checks.go @@ -59,15 +59,19 @@ func (am *DefaultAccountManager) SavePostureChecks(ctx context.Context, accountI return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { - return err - } - action = activity.PostureCheckUpdated } postureChecks.AccountID = accountID - return transaction.SavePostureChecks(ctx, postureChecks) + if err = transaction.SavePostureChecks(ctx, postureChecks); err != nil { + return err + } + + if isUpdate { + return transaction.IncrementNetworkSerial(ctx, accountID) + } + + return nil }) if err != nil { return nil, err @@ -104,11 +108,11 @@ func (am *DefaultAccountManager) DeletePostureChecks(ctx context.Context, accoun return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.DeletePostureChecks(ctx, accountID, postureChecksID); err != nil { return err } - return transaction.DeletePostureChecks(ctx, accountID, postureChecksID) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err diff --git a/management/server/route.go b/management/server/route.go index 4145ae3ac..4510426bb 100644 --- a/management/server/route.go +++ b/management/server/route.go @@ -179,11 +179,11 @@ func (am *DefaultAccountManager) CreateRoute(ctx context.Context, accountID stri return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.SaveRoute(ctx, newRoute); err != nil { return err } - return transaction.SaveRoute(ctx, newRoute) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return nil, err @@ -233,11 +233,11 @@ func (am *DefaultAccountManager) SaveRoute(ctx context.Context, accountID, userI } routeToSave.AccountID = accountID - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.SaveRoute(ctx, routeToSave); err != nil { return err } - return transaction.SaveRoute(ctx, routeToSave) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return err @@ -276,11 +276,11 @@ func (am *DefaultAccountManager) DeleteRoute(ctx context.Context, accountID stri return err } - if err = transaction.IncrementNetworkSerial(ctx, accountID); err != nil { + if err = transaction.DeleteRoute(ctx, accountID, string(routeID)); err != nil { return err } - return transaction.DeleteRoute(ctx, accountID, string(routeID)) + return transaction.IncrementNetworkSerial(ctx, accountID) }) if err != nil { return fmt.Errorf("failed to delete route %s: %w", routeID, err)