From 140104f1a12a41b86776639fba448887b5028826 Mon Sep 17 00:00:00 2001 From: backguynn Date: Wed, 24 Jan 2024 15:28:53 +0900 Subject: [PATCH] Troubleshooting concurrency issues --- .../manager/loadbalancer/loadbalancer.go | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/pkg/agent/manager/loadbalancer/loadbalancer.go b/pkg/agent/manager/loadbalancer/loadbalancer.go index a43d8e1..ff8a025 100644 --- a/pkg/agent/manager/loadbalancer/loadbalancer.go +++ b/pkg/agent/manager/loadbalancer/loadbalancer.go @@ -467,21 +467,26 @@ func (m *Manager) addLoadBalancer(svc *corev1.Service) error { return errors.New("no active endpoints") } - //c.lbCache[cacheKey] = make([]api.LoadBalancerModel, 0) - m.lbCache[cacheKey] = &LbCacheEntry{ - LbMode: lbMode, - ActCheck: livenessCheck, - PrefLocal: prefLocal, - Timeout: timeout, - State: "Added", - ProbeType: probeType, - ProbePort: uint16(probePort), - ProbeReq: probeReq, - ProbeResp: probeResp, - Addr: addrType, - SecIPs: []string{}, - LbServicePairs: make(map[string]*LbServicePairEntry), - } + addNewLbCacheEntryChan := make(chan *LbCacheEntry) + defer close(addNewLbCacheEntryChan) + go func() { + addNewLbCacheEntryChan <- &LbCacheEntry{ + LbMode: lbMode, + ActCheck: livenessCheck, + PrefLocal: prefLocal, + Timeout: timeout, + State: "Added", + ProbeType: probeType, + ProbePort: uint16(probePort), + ProbeReq: probeReq, + ProbeResp: probeResp, + Addr: addrType, + SecIPs: []string{}, + LbServicePairs: make(map[string]*LbServicePairEntry), + } + }() + + m.lbCache[cacheKey] = <-addNewLbCacheEntryChan lbCacheEntry = m.lbCache[cacheKey] klog.Infof("New LbCache %s Added", cacheKey) }