Apply endpoint health in peer cache

This commit is contained in:
2026-05-16 11:26:06 +03:00
parent 9c99899322
commit 831701003c
4 changed files with 91 additions and 30 deletions
@@ -924,16 +924,17 @@ func startSyntheticMeshEndpoint(ctx context.Context, _ context.CancelFunc, cfg c
productionForwardingEnabled := cfg.MeshProductionForwardingEnabled || loadedConfig.ProductionForwarding
routeHealthRoutes := routeHealthRoutesFromPathDecisions(routes, loadedConfig.RoutePathDecisions)
peerCache := mesh.NewPeerCache(mesh.PeerCacheConfig{
Local: local,
PeerEndpoints: loadedConfig.PeerEndpoints,
PeerEndpointCandidates: loadedConfig.PeerEndpointCandidates,
PeerDirectory: loadedConfig.PeerDirectory,
RecoverySeeds: loadedConfig.RecoverySeeds,
RendezvousLeases: loadedConfig.RendezvousLeases,
Routes: loadedConfig.Routes,
WarmPeerLimit: mesh.DefaultWarmPeerLimit,
PreferredRegion: cfg.MeshRegion,
Now: time.Now().UTC(),
Local: local,
PeerEndpoints: loadedConfig.PeerEndpoints,
PeerEndpointCandidates: loadedConfig.PeerEndpointCandidates,
PeerEndpointObservations: loadedConfig.PeerEndpointObservations,
PeerDirectory: loadedConfig.PeerDirectory,
RecoverySeeds: loadedConfig.RecoverySeeds,
RendezvousLeases: loadedConfig.RendezvousLeases,
Routes: loadedConfig.Routes,
WarmPeerLimit: mesh.DefaultWarmPeerLimit,
PreferredRegion: cfg.MeshRegion,
Now: time.Now().UTC(),
})
peerCacheSnapshot := peerCache.Snapshot()
peerConnections := mesh.NewPeerConnectionTracker(peerCacheSnapshot, time.Now().UTC())
@@ -1931,16 +1932,17 @@ func refreshSyntheticMeshConfigForRouteHealthFeedback(ctx context.Context, cfg c
func applyRefreshedSyntheticMeshConfig(ctx context.Context, cfg config.Config, identity state.Identity, meshState *syntheticMeshState, loadedConfig loadedSyntheticMeshConfig, local mesh.PeerIdentity, preferredRegion string, observedAt time.Time) {
routeHealthRoutes := routeHealthRoutesFromPathDecisions(loadedConfig.Routes, loadedConfig.RoutePathDecisions)
peerCache := mesh.NewPeerCache(mesh.PeerCacheConfig{
Local: local,
PeerEndpoints: loadedConfig.PeerEndpoints,
PeerEndpointCandidates: loadedConfig.PeerEndpointCandidates,
PeerDirectory: loadedConfig.PeerDirectory,
RecoverySeeds: loadedConfig.RecoverySeeds,
RendezvousLeases: loadedConfig.RendezvousLeases,
Routes: loadedConfig.Routes,
WarmPeerLimit: mesh.DefaultWarmPeerLimit,
PreferredRegion: preferredRegion,
Now: observedAt,
Local: local,
PeerEndpoints: loadedConfig.PeerEndpoints,
PeerEndpointCandidates: loadedConfig.PeerEndpointCandidates,
PeerEndpointObservations: loadedConfig.PeerEndpointObservations,
PeerDirectory: loadedConfig.PeerDirectory,
RecoverySeeds: loadedConfig.RecoverySeeds,
RendezvousLeases: loadedConfig.RendezvousLeases,
Routes: loadedConfig.Routes,
WarmPeerLimit: mesh.DefaultWarmPeerLimit,
PreferredRegion: preferredRegion,
Now: observedAt,
})
if meshState.PeerConnections == nil {
meshState.PeerConnections = mesh.NewPeerConnectionTracker(peerCache.Snapshot(), observedAt)