@@ -170,14 +170,10 @@ func (r *ClaimReconciler) Reconcile(ctx context.Context, req ctrl.Request) (_ ct
170
170
return ctrl.Result {}, err
171
171
}
172
172
173
- defer func ( ) {
173
+ if controllerutil . AddFinalizer ( claim , ReleaseAddressFinalizer ) {
174
174
if err := patchHelper .Patch (ctx , claim ); err != nil {
175
- reterr = kerrors . NewAggregate ([] error { reterr , err })
175
+ return ctrl. Result {} , err
176
176
}
177
- }()
178
-
179
- if controllerutil .AddFinalizer (claim , ReleaseAddressFinalizer ) {
180
- return ctrl.Result {}, nil
181
177
}
182
178
183
179
var res * reconcile.Result
@@ -187,7 +183,7 @@ func (r *ClaimReconciler) Reconcile(ctx context.Context, req ctrl.Request) (_ ct
187
183
handler := r .Adapter .ClaimHandlerFor (r .Client , claim )
188
184
if pool , res , err = handler .FetchPool (ctx ); err != nil || res != nil {
189
185
if apierrors .IsNotFound (err ) {
190
- err := errors . New ("pool not found" )
186
+ err := fmt . Errorf ("pool not found in in-cluster-provider: %w" , err )
191
187
log .Error (err , "the referenced pool could not be found" )
192
188
if ! claim .ObjectMeta .DeletionTimestamp .IsZero () {
193
189
return r .reconcileDelete (ctx , claim , handler )
@@ -212,6 +208,12 @@ func (r *ClaimReconciler) Reconcile(ctx context.Context, req ctrl.Request) (_ ct
212
208
return r .reconcileDelete (ctx , claim , handler )
213
209
}
214
210
211
+ defer func () {
212
+ if err := patchHelper .Patch (ctx , claim ); err != nil {
213
+ reterr = kerrors .NewAggregate ([]error {reterr , err })
214
+ }
215
+ }()
216
+
215
217
// We always ensure there is a valid address object passed to the handler.
216
218
// The handler will complete it with the ip address.
217
219
address := NewIPAddress (claim , pool )
@@ -289,7 +291,12 @@ func (r *ClaimReconciler) reconcileDelete(ctx context.Context, claim *ipamv1.IPA
289
291
}
290
292
}
291
293
292
- controllerutil .RemoveFinalizer (claim , ReleaseAddressFinalizer )
294
+ p := client .MergeFrom (claim .DeepCopy ())
295
+ if controllerutil .RemoveFinalizer (claim , ReleaseAddressFinalizer ) {
296
+ if err := r .Client .Patch (ctx , claim , p ); err != nil {
297
+ return ctrl.Result {}, errors .Wrap (err , "failed to remove claim finalizer" )
298
+ }
299
+ }
293
300
return ctrl.Result {}, nil
294
301
}
295
302
0 commit comments