@@ -3,6 +3,7 @@ package controller
3
3
import (
4
4
"context"
5
5
"fmt"
6
+ "maps"
6
7
"net"
7
8
"reflect"
8
9
"slices"
@@ -281,19 +282,20 @@ func (c *Controller) handleUpdateService(svcObject *updateSvcObject) error {
281
282
klog .Errorf ("failed to get LB %s: %v" , lbName , err )
282
283
return err
283
284
}
284
- klog .V (3 ).Infof ("existing vips of LB %s: %v" , lbName , lb .Vips )
285
+ lbVIPs := maps .Clone (lb .Vips )
286
+ klog .V (3 ).Infof ("existing vips of LB %s: %v" , lbName , lbVIPs )
285
287
for _ , vip := range svcVips {
286
288
if err := c .OVNNbClient .LoadBalancerDeleteVip (oLbName , vip , ignoreHealthCheck ); err != nil {
287
289
klog .Errorf ("failed to delete vip %s from LB %s: %v" , vip , oLbName , err )
288
290
return err
289
291
}
290
292
291
- if _ , ok := lb . Vips [vip ]; ! ok {
293
+ if _ , ok := lbVIPs [vip ]; ! ok {
292
294
klog .Infof ("add vip %s to LB %s" , vip , lbName )
293
295
needUpdateEndpointQueue = true
294
296
}
295
297
}
296
- for vip := range lb . Vips {
298
+ for vip := range lbVIPs {
297
299
if ip := parseVipAddr (vip ); (slices .Contains (ips , ip ) && ! slices .Contains (svcVips , vip )) || slices .Contains (ipsToDel , ip ) {
298
300
klog .Infof ("remove stale vip %s from LB %s" , vip , lbName )
299
301
if err := c .OVNNbClient .LoadBalancerDeleteVip (lbName , vip , ignoreHealthCheck ); err != nil {
@@ -312,8 +314,9 @@ func (c *Controller) handleUpdateService(svcObject *updateSvcObject) error {
312
314
klog .Errorf ("failed to get LB %s: %v" , oLbName , err )
313
315
return err
314
316
}
315
- klog .V (3 ).Infof ("existing vips of LB %s: %v" , oLbName , lb .Vips )
316
- for vip := range oLb .Vips {
317
+ oLbVIPs := maps .Clone (oLb .Vips )
318
+ klog .V (3 ).Infof ("existing vips of LB %s: %v" , oLbName , oLbVIPs )
319
+ for vip := range oLbVIPs {
317
320
if ip := parseVipAddr (vip ); slices .Contains (ips , ip ) || slices .Contains (ipsToDel , ip ) {
318
321
klog .Infof ("remove stale vip %s from LB %s" , vip , oLbName )
319
322
if err = c .OVNNbClient .LoadBalancerDeleteVip (oLbName , vip , ignoreHealthCheck ); err != nil {
0 commit comments