Loading go-apps/meep-tc-engine/routing-engine.go +3 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,9 @@ func (re *RoutingEngine) RefreshLbRules() { // Set load balanced MG Service instance for _, svcMap := range netElem.ServiceMaps { podInfo.MgSvcMap[svcMap.MgSvcName] = svcInfoMap[svcMap.LbSvcName] if svcInfo, found := svcInfoMap[svcMap.LbSvcName]; found { podInfo.MgSvcMap[svcMap.MgSvcName] = svcInfo } } } Loading go-apps/meep-tc-sidecar/main.go +56 −41 Original line number Diff line number Diff line Loading @@ -278,8 +278,8 @@ func initMeepSidecar() (err error) { // Initialize latency results latestLatencyResultsMap = make(map[string]int32) // Refresh Ping destinations refreshPingDests() // Refresh destinations refreshDests() return nil } Loading Loading @@ -335,8 +335,8 @@ func refreshNcRules() { elapsed := time.Since(currentTime) log.Debug("refreshNcRules: execution time for ", nbAppliedOperations, " updates, elapsed time: ", elapsed) // Refresh ping destinations refreshPingDests() // Refresh destinations refreshDests() } func refreshLbRules() { Loading Loading @@ -569,22 +569,38 @@ func refreshLbRulesHandler(key string, fields map[string]string, userData interf return nil } // refreshPingDests - Refresh ping destinations to match valid DB entries func refreshPingDests() { // refreshDests - Refresh destinations to match valid DB entries func refreshDests() { // Get list of destinations with valid IP addresses var pingDests []DestElement var destElems []DestElement keyName := baseKey + typeNet + ":" + PodName + ":filter*" err := rc.ForEachEntry(keyName, refreshPingDestsHandler, &pingDests) err := rc.ForEachEntry(keyName, refreshDestsHandler, &destElems) if err != nil { log.Error("Failed to update dest pod list. Error: ", err) } // Create new dest list dests := []*destination{} for _, pingDest := range pingDests { remotes, err := resolve(pingDest.ipAddr, opts.resolverTimeout) semOptsDests.Lock() defer semOptsDests.Unlock() // Find existing elements or add new elements var dests []*destination for _, destElem := range destElems { // Find existing destination found := false for _, d := range opts.dests { if destElem.name == d.remoteName && destElem.ipAddr == d.host && destElem.IfbNumber == d.ifbNumber { dests = append(dests, d) found = true break } } // Create a new destination if not found if !found { remotes, err := resolve(destElem.ipAddr, opts.resolverTimeout) if err != nil { log.Debug("error resolving host ", pingDest.name, "(", pingDest.ipAddr, ") err: ", err) log.Debug("error resolving host ", destElem.name, "(", destElem.ipAddr, ") err: ", err) continue } Loading @@ -594,13 +610,13 @@ func refreshPingDests() { } ipaddr := remote // need to create a copy name := pingDest.name name := destElem.name dest := destination{ host: pingDest.ipAddr, host: destElem.ipAddr, hostName: PodName, remote: &ipaddr, remoteName: name, ifbNumber: pingDest.IfbNumber, ifbNumber: destElem.IfbNumber, history: &history{ results: make([]time.Duration, opts.statBufferSize), }, Loading @@ -614,15 +630,14 @@ func refreshPingDests() { dests = append(dests, &dest) } } } // Update ping dest list semOptsDests.Lock() // Update dests opts.dests = dests semOptsDests.Unlock() } func refreshPingDestsHandler(key string, fields map[string]string, userData interface{}) error { pingDests := userData.(*[]DestElement) func refreshDestsHandler(key string, fields map[string]string, userData interface{}) error { dests := userData.(*[]DestElement) var dest DestElement dest.name = fields["srcName"] dest.ipAddr = fields["srcIp"] Loading @@ -630,7 +645,7 @@ func refreshPingDestsHandler(key string, fields map[string]string, userData inte // Append valid pods only if dest.ipAddr != ipAddrNone { *pingDests = append(*pingDests, dest) *dests = append(*dests, dest) } return nil } Loading Loading
go-apps/meep-tc-engine/routing-engine.go +3 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,9 @@ func (re *RoutingEngine) RefreshLbRules() { // Set load balanced MG Service instance for _, svcMap := range netElem.ServiceMaps { podInfo.MgSvcMap[svcMap.MgSvcName] = svcInfoMap[svcMap.LbSvcName] if svcInfo, found := svcInfoMap[svcMap.LbSvcName]; found { podInfo.MgSvcMap[svcMap.MgSvcName] = svcInfo } } } Loading
go-apps/meep-tc-sidecar/main.go +56 −41 Original line number Diff line number Diff line Loading @@ -278,8 +278,8 @@ func initMeepSidecar() (err error) { // Initialize latency results latestLatencyResultsMap = make(map[string]int32) // Refresh Ping destinations refreshPingDests() // Refresh destinations refreshDests() return nil } Loading Loading @@ -335,8 +335,8 @@ func refreshNcRules() { elapsed := time.Since(currentTime) log.Debug("refreshNcRules: execution time for ", nbAppliedOperations, " updates, elapsed time: ", elapsed) // Refresh ping destinations refreshPingDests() // Refresh destinations refreshDests() } func refreshLbRules() { Loading Loading @@ -569,22 +569,38 @@ func refreshLbRulesHandler(key string, fields map[string]string, userData interf return nil } // refreshPingDests - Refresh ping destinations to match valid DB entries func refreshPingDests() { // refreshDests - Refresh destinations to match valid DB entries func refreshDests() { // Get list of destinations with valid IP addresses var pingDests []DestElement var destElems []DestElement keyName := baseKey + typeNet + ":" + PodName + ":filter*" err := rc.ForEachEntry(keyName, refreshPingDestsHandler, &pingDests) err := rc.ForEachEntry(keyName, refreshDestsHandler, &destElems) if err != nil { log.Error("Failed to update dest pod list. Error: ", err) } // Create new dest list dests := []*destination{} for _, pingDest := range pingDests { remotes, err := resolve(pingDest.ipAddr, opts.resolverTimeout) semOptsDests.Lock() defer semOptsDests.Unlock() // Find existing elements or add new elements var dests []*destination for _, destElem := range destElems { // Find existing destination found := false for _, d := range opts.dests { if destElem.name == d.remoteName && destElem.ipAddr == d.host && destElem.IfbNumber == d.ifbNumber { dests = append(dests, d) found = true break } } // Create a new destination if not found if !found { remotes, err := resolve(destElem.ipAddr, opts.resolverTimeout) if err != nil { log.Debug("error resolving host ", pingDest.name, "(", pingDest.ipAddr, ") err: ", err) log.Debug("error resolving host ", destElem.name, "(", destElem.ipAddr, ") err: ", err) continue } Loading @@ -594,13 +610,13 @@ func refreshPingDests() { } ipaddr := remote // need to create a copy name := pingDest.name name := destElem.name dest := destination{ host: pingDest.ipAddr, host: destElem.ipAddr, hostName: PodName, remote: &ipaddr, remoteName: name, ifbNumber: pingDest.IfbNumber, ifbNumber: destElem.IfbNumber, history: &history{ results: make([]time.Duration, opts.statBufferSize), }, Loading @@ -614,15 +630,14 @@ func refreshPingDests() { dests = append(dests, &dest) } } } // Update ping dest list semOptsDests.Lock() // Update dests opts.dests = dests semOptsDests.Unlock() } func refreshPingDestsHandler(key string, fields map[string]string, userData interface{}) error { pingDests := userData.(*[]DestElement) func refreshDestsHandler(key string, fields map[string]string, userData interface{}) error { dests := userData.(*[]DestElement) var dest DestElement dest.name = fields["srcName"] dest.ipAddr = fields["srcIp"] Loading @@ -630,7 +645,7 @@ func refreshPingDestsHandler(key string, fields map[string]string, userData inte // Append valid pods only if dest.ipAddr != ipAddrNone { *pingDests = append(*pingDests, dest) *dests = append(*dests, dest) } return nil } Loading