Skip to content

Commit 52d2bde

Browse files
authored
Merge pull request #297 from sunya-ch/fix-reconcile-finalizer-update
Fix reconcile finalizer update
2 parents dd83f47 + 1e28e64 commit 52d2bde

File tree

6 files changed

+82
-37
lines changed

6 files changed

+82
-37
lines changed

controllers/cidr_controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/go-logr/logr"
1313
"k8s.io/apimachinery/pkg/api/errors"
1414
"k8s.io/apimachinery/pkg/runtime"
15+
"k8s.io/client-go/util/retry"
1516
ctrl "sigs.k8s.io/controller-runtime"
1617
"sigs.k8s.io/controller-runtime/pkg/client"
1718
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -71,9 +72,17 @@ func (r *CIDRReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.
7172
if err := r.callFinalizer(vars.CIDRLog, instance); err != nil {
7273
return ctrl.Result{}, err
7374
}
74-
75-
controllerutil.RemoveFinalizer(instance, cidrFinalizer)
76-
err := r.Client.Update(ctx, instance)
75+
err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
76+
err := r.Client.Get(ctx, req.NamespacedName, instance)
77+
if err != nil {
78+
if errors.IsNotFound(err) {
79+
return nil
80+
}
81+
return err
82+
}
83+
controllerutil.RemoveFinalizer(instance, cidrFinalizer)
84+
return r.Client.Update(ctx, instance)
85+
})
7786
if err != nil {
7887
return ctrl.Result{}, err
7988
}

controllers/config_controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"go.uber.org/zap/zapcore"
1515
"k8s.io/apimachinery/pkg/api/errors"
1616
"k8s.io/apimachinery/pkg/runtime"
17+
"k8s.io/client-go/util/retry"
1718
ctrl "sigs.k8s.io/controller-runtime"
1819
"sigs.k8s.io/controller-runtime/pkg/client"
1920
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -174,9 +175,17 @@ func (r *ConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
174175
if err = r.callFinalizer(vars.ConfigLog, req.NamespacedName.Name); err != nil {
175176
return ctrl.Result{}, err
176177
}
177-
178-
controllerutil.RemoveFinalizer(instance, configFinalizer)
179-
err := r.Client.Update(ctx, instance)
178+
err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
179+
err := r.Client.Get(ctx, req.NamespacedName, instance)
180+
if err != nil {
181+
if errors.IsNotFound(err) {
182+
return nil
183+
}
184+
return err
185+
}
186+
controllerutil.RemoveFinalizer(instance, configFinalizer)
187+
return r.Client.Update(ctx, instance)
188+
})
180189
if err != nil {
181190
return ctrl.Result{}, err
182191
}

controllers/hostinterface_controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1414
"k8s.io/apimachinery/pkg/runtime"
1515
"k8s.io/client-go/kubernetes"
16+
"k8s.io/client-go/util/retry"
1617
ctrl "sigs.k8s.io/controller-runtime"
1718
"sigs.k8s.io/controller-runtime/pkg/client"
1819
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -106,9 +107,17 @@ func (r *HostInterfaceReconciler) Reconcile(ctx context.Context, req ctrl.Reques
106107
if err := r.CallFinalizer(vars.HifLog, instance); err != nil {
107108
return ctrl.Result{}, err
108109
}
109-
110-
controllerutil.RemoveFinalizer(instance, hifFinalizer)
111-
err := r.Client.Update(ctx, instance)
110+
err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
111+
err := r.Client.Get(ctx, req.NamespacedName, instance)
112+
if err != nil {
113+
if errors.IsNotFound(err) {
114+
return nil
115+
}
116+
return err
117+
}
118+
controllerutil.RemoveFinalizer(instance, hifFinalizer)
119+
return r.Client.Update(ctx, instance)
120+
})
112121
if err != nil {
113122
return ctrl.Result{}, err
114123
}

controllers/ippool_controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/go-logr/logr"
1313
"k8s.io/apimachinery/pkg/api/errors"
1414
"k8s.io/apimachinery/pkg/runtime"
15+
"k8s.io/client-go/util/retry"
1516
ctrl "sigs.k8s.io/controller-runtime"
1617
"sigs.k8s.io/controller-runtime/pkg/client"
1718
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -76,9 +77,17 @@ func (r *IPPoolReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
7677
if err := r.callFinalizer(vars.IPPoolLog, instance); err != nil {
7778
return ctrl.Result{}, err
7879
}
79-
80-
controllerutil.RemoveFinalizer(instance, ippoolFinalizer)
81-
err := r.Client.Update(ctx, instance)
80+
err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
81+
err := r.Client.Get(ctx, req.NamespacedName, instance)
82+
if err != nil {
83+
if errors.IsNotFound(err) {
84+
return nil
85+
}
86+
return err
87+
}
88+
controllerutil.RemoveFinalizer(instance, ippoolFinalizer)
89+
return r.Client.Update(ctx, instance)
90+
})
8291
if err != nil {
8392
return ctrl.Result{}, err
8493
}

controllers/multinicnetwork_controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"k8s.io/apimachinery/pkg/api/errors"
1616
"k8s.io/apimachinery/pkg/runtime"
1717
"k8s.io/client-go/rest"
18+
"k8s.io/client-go/util/retry"
1819
ctrl "sigs.k8s.io/controller-runtime"
1920
"sigs.k8s.io/controller-runtime/pkg/client"
2021
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -124,9 +125,17 @@ func (r *MultiNicNetworkReconciler) Reconcile(ctx context.Context, req ctrl.Requ
124125
if err := r.callFinalizer(vars.NetworkLog, instance); err != nil {
125126
return ctrl.Result{}, err
126127
}
127-
128-
controllerutil.RemoveFinalizer(instance, multinicnetworkFinalizer)
129-
err := r.Client.Update(ctx, instance)
128+
err := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
129+
err := r.Client.Get(ctx, req.NamespacedName, instance)
130+
if err != nil {
131+
if errors.IsNotFound(err) {
132+
return nil
133+
}
134+
return err
135+
}
136+
controllerutil.RemoveFinalizer(instance, multinicnetworkFinalizer)
137+
return r.Client.Update(ctx, instance)
138+
})
130139
if err != nil {
131140
return ctrl.Result{}, err
132141
}

testing/coverage.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
File | Function | Coverage
44
---|---|---
5-
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_controller.go:39: | Reconcile | 83.3% |
6-
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_controller.go:110: | SetupWithManager | 100.0% |
7-
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_controller.go:117: | callFinalizer | 100.0% |
5+
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_controller.go:40: | Reconcile | 79.2% |
6+
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_controller.go:119: | SetupWithManager | 100.0% |
7+
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_controller.go:126: | callFinalizer | 100.0% |
88
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_handler.go:55: | NewCIDRHandler | 100.0% |
99
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_handler.go:86: | InitCustomCRCache | 66.7% |
1010
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_handler.go:104: | GetCIDR | 100.0% |
@@ -41,15 +41,15 @@ File | Function | Coverage
4141
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_handler.go:1048: | SetCache | 100.0% |
4242
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_handler.go:1052: | GetCache | 0.0% |
4343
| github.com/foundation-model-stack/multi-nic-cni/controllers/cidr_handler.go:1060: | ListCache | 83.3% |
44-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:44: | getOperatorNamespace | 80.0% |
45-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:70: | getDefaultConfigSpec | 100.0% |
46-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:131: | CreateDefaultDaemonConfig | 0.0% |
47-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:144: | Reconcile | 81.0% |
48-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:219: | SetupWithManager | 100.0% |
49-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:226: | UpdateConfigBySpec | 90.5% |
50-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:258: | newCNIDaemonSet | 89.5% |
51-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:344: | getCNIHostPath | 88.2% |
52-
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:376: | callFinalizer | 70.6% |
44+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:45: | getOperatorNamespace | 80.0% |
45+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:71: | getDefaultConfigSpec | 100.0% |
46+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:132: | CreateDefaultDaemonConfig | 0.0% |
47+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:145: | Reconcile | 79.2% |
48+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:228: | SetupWithManager | 100.0% |
49+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:235: | UpdateConfigBySpec | 90.5% |
50+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:267: | newCNIDaemonSet | 89.5% |
51+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:353: | getCNIHostPath | 88.2% |
52+
| github.com/foundation-model-stack/multi-nic-cni/controllers/config_controller.go:385: | callFinalizer | 70.6% |
5353
| github.com/foundation-model-stack/multi-nic-cni/controllers/daemon_cache_handler.go:26: | SetCache | 100.0% |
5454
| github.com/foundation-model-stack/multi-nic-cni/controllers/daemon_cache_handler.go:30: | GetCache | 100.0% |
5555
| github.com/foundation-model-stack/multi-nic-cni/controllers/daemon_cache_handler.go:38: | ListCache | 100.0% |
@@ -71,12 +71,12 @@ File | Function | Coverage
7171
| github.com/foundation-model-stack/multi-nic-cni/controllers/daemon_watcher.go:259: | isDaemonPod | 75.0% |
7272
| github.com/foundation-model-stack/multi-nic-cni/controllers/daemon_watcher.go:269: | createHostInterfaceInfo | 80.0% |
7373
| github.com/foundation-model-stack/multi-nic-cni/controllers/daemon_watcher.go:279: | IsDaemonSetReady | 75.0% |
74-
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:38: | InitHostInterfaceCache | 63.2% |
75-
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:79: | Reconcile | 76.5% |
76-
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:140: | SetupWithManager | 100.0% |
77-
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:146: | UpdateInterfaces | 23.1% |
78-
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:206: | UpdateNewInterfaces | 100.0% |
79-
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:239: | CallFinalizer | 100.0% |
74+
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:39: | InitHostInterfaceCache | 63.2% |
75+
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:80: | Reconcile | 72.5% |
76+
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:149: | SetupWithManager | 100.0% |
77+
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:155: | UpdateInterfaces | 23.1% |
78+
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:215: | UpdateNewInterfaces | 100.0% |
79+
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_controller.go:248: | CallFinalizer | 100.0% |
8080
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_handler.go:34: | NewHostInterfaceHandler | 100.0% |
8181
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_handler.go:48: | initHostInterface | 100.0% |
8282
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_handler.go:62: | CreateHostInterface | 100.0% |
@@ -90,10 +90,10 @@ File | Function | Coverage
9090
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_handler.go:149: | IpamJoin | 13.0% |
9191
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_handler.go:192: | addLabel | 0.0% |
9292
| github.com/foundation-model-stack/multi-nic-cni/controllers/hostinterface_handler.go:206: | GetInfoAvailableSize | 100.0% |
93-
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:37: | InitIppoolCache | 77.8% |
94-
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:53: | Reconcile | 77.8% |
95-
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:104: | SetupWithManager | 100.0% |
96-
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:111: | callFinalizer | 55.6% |
93+
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:38: | InitIppoolCache | 77.8% |
94+
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:54: | Reconcile | 72.7% |
95+
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:113: | SetupWithManager | 100.0% |
96+
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_controller.go:120: | callFinalizer | 55.6% |
9797
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_handler.go:39: | GetIPPool | 100.0% |
9898
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_handler.go:52: | ListIPPool | 100.0% |
9999
| github.com/foundation-model-stack/multi-nic-cni/controllers/ippool_handler.go:68: | DeleteIPPool | 100.0% |

0 commit comments

Comments
 (0)