Skip to content

Commit 834a3e2

Browse files
authored
Merge pull request kubernetes-sigs#9570 from killianmuldoon/pr-retry-node-delete
🐛 Retry Node delete when CCT is locked
2 parents 491ba26 + fed54bf commit 834a3e2

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

internal/controllers/machine/machine_controller.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,11 @@ func (r *Reconciler) drainNode(ctx context.Context, cluster *clusterv1.Cluster,
604604

605605
restConfig, err := r.Tracker.GetRESTConfig(ctx, util.ObjectKey(cluster))
606606
if err != nil {
607-
log.Error(err, "Error creating a remote client while deleting Machine, won't retry")
607+
if errors.Is(err, remote.ErrClusterLocked) {
608+
log.V(5).Info("Requeuing drain Node because another worker has the lock on the ClusterCacheTracker")
609+
return ctrl.Result{Requeue: true}, nil
610+
}
611+
log.Error(err, "Error creating a remote client for cluster while draining Node, won't retry")
608612
return ctrl.Result{}, nil
609613
}
610614
restConfig = rest.CopyConfig(restConfig)
@@ -700,7 +704,10 @@ func (r *Reconciler) deleteNode(ctx context.Context, cluster *clusterv1.Cluster,
700704

701705
remoteClient, err := r.Tracker.GetClient(ctx, util.ObjectKey(cluster))
702706
if err != nil {
703-
log.Error(err, "Error creating a remote client for cluster while deleting Machine, won't retry")
707+
if errors.Is(err, remote.ErrClusterLocked) {
708+
return errors.Wrapf(err, "failed deleting Node because another worker has the lock on the ClusterCacheTracker")
709+
}
710+
log.Error(err, "Error creating a remote client for cluster while deleting Node, won't retry")
704711
return nil
705712
}
706713

0 commit comments

Comments
 (0)