From 542dbdb41c52ee2a76427276ed9980c71574d83a Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Thu, 3 Jul 2025 18:50:17 +0200 Subject: [PATCH] fix group save with removal of all peers --- management/server/store/sql_store.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/management/server/store/sql_store.go b/management/server/store/sql_store.go index 2fa183da6..648074cf9 100644 --- a/management/server/store/sql_store.go +++ b/management/server/store/sql_store.go @@ -480,8 +480,9 @@ func (s *SqlStore) SaveGroups(ctx context.Context, lockStrength LockingStrength, for _, g := range groups { if len(g.GroupPeers) == 0 { - if err := tx.Model(&g).Association("GroupPeers").Clear(); err != nil { - return status.Errorf(status.Internal, "failed to clear group peers: %s", err) + if err := tx.Where("group_id = ?", g.ID).Delete(&types.GroupPeer{}).Error; err != nil { + log.WithContext(ctx).Errorf("failed to delete group peers for group %s: %s", g.ID, err) + return status.Errorf(status.Internal, "failed to delete group peers") } } else { if err := tx.Model(&g).Association("GroupPeers").Replace(g.GroupPeers); err != nil { @@ -1838,8 +1839,9 @@ func (s *SqlStore) SaveGroup(ctx context.Context, lockStrength LockingStrength, } if len(group.GroupPeers) == 0 { - if err := s.db.Model(&group).Association("GroupPeers").Clear(); err != nil { - return status.Errorf(status.Internal, "failed to clear group peers: %s", err) + if err := s.db.Where("group_id = ?", group.ID).Delete(&types.GroupPeer{}).Error; err != nil { + log.WithContext(ctx).Errorf("failed to delete group peers for group %s: %s", group.ID, err) + return status.Errorf(status.Internal, "failed to delete group peers") } } else { if err := s.db.Model(&group).Association("GroupPeers").Replace(group.GroupPeers); err != nil {