Skip to content

Commit 4102dd9

Browse files
committed
feat(nsc): getMetricsServiceMap() rebuilds only after services changed
1 parent eae4ea1 commit 4102dd9

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

pkg/controllers/proxy/network_services_controller.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ type NetworkServicesController struct {
117117
syncPeriod time.Duration
118118
mu sync.Mutex
119119
serviceMap atomic.Pointer[serviceInfoMap]
120+
serviceMetricsMap atomic.Pointer[metricsServiceMap]
120121
endpointsMap endpointSliceInfoMap
121122
podCidr string
122123
excludedCidrs []net.IPNet
@@ -2050,6 +2051,7 @@ func NewNetworkServicesController(clientset kubernetes.Interface,
20502051

20512052
func (nsc *NetworkServicesController) setServiceMap(serviceMap serviceInfoMap) {
20522053
nsc.serviceMap.Store(&serviceMap)
2054+
nsc.serviceMetricsMap.Store(nil)
20532055
}
20542056

20552057
func (nsc *NetworkServicesController) getServiceMap() serviceInfoMap {

pkg/controllers/proxy/network_services_metrics.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ type metricsServiceMap map[metricsServiceMapKey]*serviceInfo
2121

2222
// getMetricsServiceMap builds a structure suitable for quick matching services
2323
func (nsc *NetworkServicesController) getMetricsServiceMap() metricsServiceMap {
24+
if serviceMapPtr := nsc.serviceMetricsMap.Load(); serviceMapPtr != nil {
25+
return *serviceMapPtr
26+
}
27+
2428
var err error
2529
serviceMap := metricsServiceMap{}
2630

@@ -52,6 +56,8 @@ func (nsc *NetworkServicesController) getMetricsServiceMap() metricsServiceMap {
5256
}
5357
}
5458

59+
nsc.serviceMetricsMap.Store(&serviceMap)
60+
5561
return serviceMap
5662
}
5763

0 commit comments

Comments
 (0)