diff --git a/management/server/migration/migration.go b/management/server/migration/migration.go index ecfacb5a0..c9ed82d92 100644 --- a/management/server/migration/migration.go +++ b/management/server/migration/migration.go @@ -39,6 +39,11 @@ func MigrateFieldFromGobToJSON[T any, S any](ctx context.Context, db *gorm.DB, f return nil } + if !db.Migrator().HasColumn(&model, fieldName) { + log.WithContext(ctx).Debugf("Table for %T does not have column %s, no migration needed", model, fieldName) + return nil + } + stmt := &gorm.Statement{DB: db} err := stmt.Parse(model) if err != nil { diff --git a/management/server/store/sql_store.go b/management/server/store/sql_store.go index 2b1073c33..fd168ef9b 100644 --- a/management/server/store/sql_store.go +++ b/management/server/store/sql_store.go @@ -1810,17 +1810,12 @@ func (s *SqlStore) SaveGroup(ctx context.Context, lockStrength LockingStrength, group.StoreGroupPeers() - tx := s.db - if lockStrength != LockingStrengthNone { - tx = tx.Clauses(clause.Locking{Strength: string(lockStrength)}) - } - - if err := tx.Model(group).Association("Peers").Replace(group.Peers); err != nil { + if err := s.db.Model(group).Association("GroupPeers").Replace(group.GroupPeers); err != nil { log.WithContext(ctx).Errorf("failed to replace peers for group %s: %v", group.ID, err) return status.Errorf(status.Internal, "failed to sync group peers") } - if err := tx.Save(group).Error; err != nil { + if err := s.db.Save(group).Error; err != nil { log.WithContext(ctx).Errorf("failed to save group to store: %v", err) return status.Errorf(status.Internal, "failed to save group to store") } diff --git a/management/server/types/group.go b/management/server/types/group.go index b8284efbb..81fc4b6c8 100644 --- a/management/server/types/group.go +++ b/management/server/types/group.go @@ -45,7 +45,7 @@ func (g *Group) LoadGroupPeers() { for i, peer := range g.GroupPeers { g.Peers[i] = peer.PeerID } - // g.GroupPeers = nil + g.GroupPeers = nil } func (g *Group) StoreGroupPeers() { g.GroupPeers = make([]GroupPeer, len(g.Peers)) @@ -55,7 +55,7 @@ func (g *Group) StoreGroupPeers() { PeerID: peer, } } - // g.Peers = nil + g.Peers = nil } // EventMeta returns activity event meta related to the group