cache read without account get from db

This commit is contained in:
crn4
2025-10-02 11:28:59 +02:00
parent 806be13dd5
commit 9a56883ffb
3 changed files with 21 additions and 6 deletions
+15
View File
@@ -1,6 +1,8 @@
package server package server
import ( import (
"context"
"github.com/netbirdio/netbird/management/server/types" "github.com/netbirdio/netbird/management/server/types"
) )
@@ -18,6 +20,19 @@ func (am *DefaultAccountManager) enrichAccountFromHolder(account *types.Account)
am.holder.AddAccount(account) am.holder.AddAccount(account)
} }
func (am *DefaultAccountManager) getAccountFromHolder(accountID string) *types.Account {
a := am.holder.GetAccount(accountID)
if a != nil {
return a
}
account, err := am.Store.GetAccount(context.Background(), accountID)
if err != nil {
return nil
}
am.holder.AddAccount(account)
return account
}
func (am *DefaultAccountManager) updateAccountInHolder(account *types.Account) { func (am *DefaultAccountManager) updateAccountInHolder(account *types.Account) {
am.holder.AddAccount(account) am.holder.AddAccount(account)
} }
+2 -2
View File
@@ -19,13 +19,13 @@ func (am *DefaultAccountManager) initNetworkMapBuilderIfNeeded(account *types.Ac
func (am *DefaultAccountManager) getPeerNetworkMapExp( func (am *DefaultAccountManager) getPeerNetworkMapExp(
ctx context.Context, ctx context.Context,
account *types.Account, accountId string,
peerId string, peerId string,
validatedPeers map[string]struct{}, validatedPeers map[string]struct{},
customZone nbdns.CustomZone, customZone nbdns.CustomZone,
metrics *telemetry.AccountManagerMetrics, metrics *telemetry.AccountManagerMetrics,
) *types.NetworkMap { ) *types.NetworkMap {
am.enrichAccountFromHolder(account) account := am.getAccountFromHolder(accountId)
return account.GetPeerNetworkMapExp(ctx, peerId, customZone, validatedPeers, metrics) return account.GetPeerNetworkMapExp(ctx, peerId, customZone, validatedPeers, metrics)
} }
+4 -4
View File
@@ -453,7 +453,7 @@ func (am *DefaultAccountManager) GetNetworkMap(ctx context.Context, peerID strin
var networkMap *types.NetworkMap var networkMap *types.NetworkMap
if am.expNewNetworkMap { if am.expNewNetworkMap {
networkMap = am.getPeerNetworkMapExp(ctx, account, peerID, validatedPeers, customZone, nil) networkMap = am.getPeerNetworkMapExp(ctx, peer.AccountID, peerID, validatedPeers, customZone, nil)
} else { } else {
networkMap = account.GetPeerNetworkMap(ctx, peer.ID, customZone, validatedPeers, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil) networkMap = account.GetPeerNetworkMap(ctx, peer.ID, customZone, validatedPeers, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), nil)
} }
@@ -1093,7 +1093,7 @@ func (am *DefaultAccountManager) getValidatedPeerWithMap(ctx context.Context, is
var networkMap *types.NetworkMap var networkMap *types.NetworkMap
if am.expNewNetworkMap { if am.expNewNetworkMap {
networkMap = am.getPeerNetworkMapExp(ctx, account, peer.ID, approvedPeersMap, customZone, am.metrics.AccountManagerMetrics()) networkMap = am.getPeerNetworkMapExp(ctx, peer.AccountID, peer.ID, approvedPeersMap, customZone, am.metrics.AccountManagerMetrics())
} else { } else {
networkMap = account.GetPeerNetworkMap(ctx, peer.ID, customZone, approvedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), am.metrics.AccountManagerMetrics()) networkMap = account.GetPeerNetworkMap(ctx, peer.ID, customZone, approvedPeersMap, account.GetResourcePoliciesMap(), account.GetResourceRoutersMap(), am.metrics.AccountManagerMetrics())
} }
@@ -1305,7 +1305,7 @@ func (am *DefaultAccountManager) UpdateAccountPeers(ctx context.Context, account
var remotePeerNetworkMap *types.NetworkMap var remotePeerNetworkMap *types.NetworkMap
if am.expNewNetworkMap { if am.expNewNetworkMap {
remotePeerNetworkMap = am.getPeerNetworkMapExp(ctx, account, peer.ID, approvedPeersMap, customZone, am.metrics.AccountManagerMetrics()) remotePeerNetworkMap = am.getPeerNetworkMapExp(ctx, p.AccountID, p.ID, approvedPeersMap, customZone, am.metrics.AccountManagerMetrics())
} else { } else {
remotePeerNetworkMap = account.GetPeerNetworkMap(ctx, p.ID, customZone, approvedPeersMap, resourcePolicies, routers, am.metrics.AccountManagerMetrics()) remotePeerNetworkMap = account.GetPeerNetworkMap(ctx, p.ID, customZone, approvedPeersMap, resourcePolicies, routers, am.metrics.AccountManagerMetrics())
} }
@@ -1421,7 +1421,7 @@ func (am *DefaultAccountManager) UpdateAccountPeer(ctx context.Context, accountI
var remotePeerNetworkMap *types.NetworkMap var remotePeerNetworkMap *types.NetworkMap
if am.expNewNetworkMap { if am.expNewNetworkMap {
remotePeerNetworkMap = am.getPeerNetworkMapExp(ctx, account, peer.ID, approvedPeersMap, customZone, am.metrics.AccountManagerMetrics()) remotePeerNetworkMap = am.getPeerNetworkMapExp(ctx, peer.AccountID, peer.ID, approvedPeersMap, customZone, am.metrics.AccountManagerMetrics())
} else { } else {
remotePeerNetworkMap = account.GetPeerNetworkMap(ctx, peerId, customZone, approvedPeersMap, resourcePolicies, routers, am.metrics.AccountManagerMetrics()) remotePeerNetworkMap = account.GetPeerNetworkMap(ctx, peerId, customZone, approvedPeersMap, resourcePolicies, routers, am.metrics.AccountManagerMetrics())
} }