@@ -26,6 +26,7 @@ import (
2626 "k8s.io/apimachinery/pkg/runtime"
2727 "k8s.io/apimachinery/pkg/types"
2828 "k8s.io/client-go/tools/record"
29+ "k8s.io/client-go/util/retry"
2930 ctrl "sigs.k8s.io/controller-runtime"
3031 "sigs.k8s.io/controller-runtime/pkg/client"
3132 "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -338,18 +339,26 @@ func (r *NIMPipelineReconciler) updateStatus(ctx context.Context, nimPipeline *a
338339 r .GetEventRecorder ().Eventf (nimPipeline , corev1 .EventTypeNormal , overallState ,
339340 "NIMPipeline %s status %s, service states %v" , nimPipeline .Name , overallState , serviceStates )
340341
341- if err := r .Status ().Update (ctx , nimPipeline ); err != nil {
342- logger .Error (err , "Failed to update NIMPipeline status" )
343- return err
344- }
345-
346- return nil
342+ return retry .RetryOnConflict (retry .DefaultBackoff , func () error {
343+ obj := & appsv1alpha1.NIMPipeline {}
344+ errGet := r .Get (ctx , types.NamespacedName {Name : nimPipeline .Name , Namespace : nimPipeline .GetNamespace ()}, obj )
345+ if errGet != nil {
346+ logger .Error (errGet , "error getting NIMPipeline" , "name" , nimPipeline .Name )
347+ return errGet
348+ }
349+ obj .Status = nimPipeline .Status
350+ if err := r .Status ().Update (ctx , obj ); err != nil {
351+ logger .Error (err , "Failed to update status" , "NIMPipeline" , nimPipeline .Name )
352+ return err
353+ }
354+ return nil
355+ })
347356}
348357
349358func (r * NIMPipelineReconciler ) deleteService (ctx context.Context , svc * appsv1alpha1.NIMService ) error {
350359 logger := log .FromContext (ctx )
351360 logger .Info ("Deleting NIMService" , "name" , svc .Name , "namespace" , svc .Namespace )
352- if err := r .Delete (ctx , svc ); err != nil {
361+ if err := r .Delete (ctx , svc ); err != nil && ! errors . IsNotFound ( err ) {
353362 logger .Error (err , "Failed to delete NIMService" , "name" , svc .Name )
354363 return err
355364 }
0 commit comments