diff --git a/management/server/store/sql_store.go b/management/server/store/sql_store.go index 382d026c8..5953671a4 100644 --- a/management/server/store/sql_store.go +++ b/management/server/store/sql_store.go @@ -857,6 +857,7 @@ func (s *SqlStore) GetAccount(ctx context.Context, accountID string) (*types.Acc } account.NameServerGroupsG = nil + account.InitOnce() return &account, nil } diff --git a/management/server/types/account.go b/management/server/types/account.go index e6019d2a3..9c0c36c2d 100644 --- a/management/server/types/account.go +++ b/management/server/types/account.go @@ -89,7 +89,11 @@ type Account struct { Onboarding AccountOnboarding `gorm:"foreignKey:AccountID;references:id;constraint:OnDelete:CASCADE"` NetworkMapCache *NetworkMapBuilder `gorm:"-"` - nmapInitOnce sync.Once + nmapInitOnce *sync.Once `gorm:"-"` +} + +func (a *Account) InitOnce() { + a.nmapInitOnce = &sync.Once{} } // this class is used by gorm only diff --git a/management/server/types/networkmap.go b/management/server/types/networkmap.go index 6057194b6..0011cbc19 100644 --- a/management/server/types/networkmap.go +++ b/management/server/types/networkmap.go @@ -846,6 +846,9 @@ func peerIsNameserver(peer *nbpeer.Peer, nsGroup *nbdns.NameServerGroup) bool { } func (a *Account) initNetworkMapBuilder(validatedPeers map[string]struct{}) { + if a.NetworkMapCache != nil { + return + } a.nmapInitOnce.Do(func() { a.NetworkMapCache = NewNetworkMapBuilder(a, validatedPeers) })