Skip to content

Commit 1d954c3

Browse files
authored
Merge pull request #9583 from k8s-infra-cherrypick-robot/cherry-pick-9570-to-release-1.4
[release-1.4] 🐛 Retry Node delete when CCT is locked
2 parents 99dc50f + a22a763 commit 1d954c3

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
@@ -582,7 +582,11 @@ func (r *Reconciler) drainNode(ctx context.Context, cluster *clusterv1.Cluster,
582582

583583
restConfig, err := remote.RESTConfig(ctx, controllerName, r.Client, util.ObjectKey(cluster))
584584
if err != nil {
585-
log.Error(err, "Error creating a remote client while deleting Machine, won't retry")
585+
if errors.Is(err, remote.ErrClusterLocked) {
586+
log.V(5).Info("Requeuing drain Node because another worker has the lock on the ClusterCacheTracker")
587+
return ctrl.Result{Requeue: true}, nil
588+
}
589+
log.Error(err, "Error creating a remote client for cluster while draining Node, won't retry")
586590
return ctrl.Result{}, nil
587591
}
588592
kubeClient, err := kubernetes.NewForConfig(restConfig)
@@ -676,7 +680,10 @@ func (r *Reconciler) deleteNode(ctx context.Context, cluster *clusterv1.Cluster,
676680

677681
remoteClient, err := r.Tracker.GetClient(ctx, util.ObjectKey(cluster))
678682
if err != nil {
679-
log.Error(err, "Error creating a remote client for cluster while deleting Machine, won't retry")
683+
if errors.Is(err, remote.ErrClusterLocked) {
684+
return errors.Wrapf(err, "failed deleting Node because another worker has the lock on the ClusterCacheTracker")
685+
}
686+
log.Error(err, "Error creating a remote client for cluster while deleting Node, won't retry")
680687
return nil
681688
}
682689

0 commit comments

Comments
 (0)