@@ -366,6 +366,7 @@ func (l *LifecycleManager) addFinalizersIfNeeded(ctx context.Context, instance R
366
366
}
367
367
368
368
update := false
369
+ original := instance .DeepCopyObject ().(client.Object )
369
370
for _ , subroutine := range l .subroutines {
370
371
if len (subroutine .Finalizers ()) > 0 {
371
372
needsUpdate := l .addFinalizerIfNeeded (instance , subroutine )
@@ -375,7 +376,8 @@ func (l *LifecycleManager) addFinalizersIfNeeded(ctx context.Context, instance R
375
376
}
376
377
}
377
378
if update {
378
- err := l .client .Update (ctx , instance )
379
+ patch := client .MergeFrom (original )
380
+ err := l .client .Patch (ctx , instance , patch )
379
381
if err != nil {
380
382
return err
381
383
}
@@ -401,14 +403,16 @@ func (l *LifecycleManager) removeFinalizerIfNeeded(ctx context.Context, instance
401
403
402
404
if ! result .Requeue && result .RequeueAfter == 0 {
403
405
update := false
406
+ original := instance .DeepCopyObject ().(client.Object )
404
407
for _ , f := range subroutine .Finalizers () {
405
408
needsUpdate := controllerutil .RemoveFinalizer (instance , f )
406
409
if needsUpdate {
407
410
update = true
408
411
}
409
412
}
410
413
if update {
411
- err := l .client .Update (ctx , instance )
414
+ patch := client .MergeFrom (original )
415
+ err := l .client .Patch (ctx , instance , patch )
412
416
if err != nil {
413
417
return errors .NewOperatorError (errors .Wrap (err , "failed to update instance" ), true , false )
414
418
}
0 commit comments