@@ -582,7 +582,11 @@ func (r *Reconciler) drainNode(ctx context.Context, cluster *clusterv1.Cluster,
582
582
583
583
restConfig , err := remote .RESTConfig (ctx , controllerName , r .Client , util .ObjectKey (cluster ))
584
584
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" )
586
590
return ctrl.Result {}, nil
587
591
}
588
592
kubeClient , err := kubernetes .NewForConfig (restConfig )
@@ -676,7 +680,10 @@ func (r *Reconciler) deleteNode(ctx context.Context, cluster *clusterv1.Cluster,
676
680
677
681
remoteClient , err := r .Tracker .GetClient (ctx , util .ObjectKey (cluster ))
678
682
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" )
680
687
return nil
681
688
}
682
689
0 commit comments