diff --git a/management/server/holder.go b/management/server/holder.go index 3b81d24d4..fc7ecc973 100644 --- a/management/server/holder.go +++ b/management/server/holder.go @@ -1,6 +1,8 @@ package server import ( + "context" + "github.com/netbirdio/netbird/management/server/types" ) @@ -22,6 +24,19 @@ func (am *DefaultAccountManager) getAccountFromHolder(accountID string) *types.A return am.holder.GetAccount(accountID) } +func (am *DefaultAccountManager) getAccountFromHolderOrInit(accountID string) *types.Account { + a := am.holder.GetAccount(accountID) + if a != nil { + return a + } + account, err := am.requestBuffer.GetAccountWithBackpressure(context.Background(), accountID) + if err != nil { + return nil + } + am.holder.AddAccount(account) + return account +} + func (am *DefaultAccountManager) updateAccountInHolder(account *types.Account) { am.holder.AddAccount(account) } diff --git a/management/server/peer.go b/management/server/peer.go index 2711f10d5..c14eb0503 100644 --- a/management/server/peer.go +++ b/management/server/peer.go @@ -1221,7 +1221,7 @@ func (am *DefaultAccountManager) UpdateAccountPeers(ctx context.Context, account err error ) if am.experimentalNetworkMap(accountID) { - account = am.getAccountFromHolder(accountID) + account = am.getAccountFromHolderOrInit(accountID) } else { account, err = am.requestBuffer.GetAccountWithBackpressure(ctx, accountID) if err != nil {