[management] Move increment network serial as last step of each transaction (#4397)

This commit is contained in:
Pascal Fischer
2025-08-25 17:27:07 +02:00
committed by GitHub
parent 5e273c121a
commit 3488a516c9
9 changed files with 61 additions and 56 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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
}

View File

@@ -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

View File

@@ -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

View File

@@ -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)