Skip to content

Commit ca33536

Browse files
committed
Improve error handling during NIM pipeline reconciliation
Signed-off-by: Shiva Krishna, Merla <smerla@nvidia.com>
1 parent 838de24 commit ca33536

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

internal/controller/nimpipeline_controller.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

349358
func (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

Comments
 (0)