Skip to content

Commit 51424e2

Browse files
committed
Clean taints from a timeout deleted node
Signed-off-by: Michael Shitrit <[email protected]>
1 parent 7822739 commit 51424e2

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

controllers/selfnoderemediation_controller.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,27 @@ func (r *SelfNodeRemediationReconciler) ReconcileManager(ctx context.Context, re
244244
//This remediation is no longer relevant, most likely because fixed by a different remediator.
245245
if snr.GetDeletionTimestamp() != nil {
246246
//Removing finalizer so NHC deletion of the remediation can be completed
247-
r.logger.Info("Removing finalizer of timed-out remediation deleted by NHC", "remediation name", snr.GetName())
248-
return ctrl.Result{}, r.removeFinalizer(snr)
247+
r.logger.Info("Cleaning up a timed-out remediation which is deleted by NHC", "remediation name", snr.GetName())
248+
249+
//Node found, cleanup Taints before removing the finlizer
250+
if node, err := r.getNodeFromSnr(ctx, snr); err == nil {
251+
if taintErr := r.removeOutOfServiceTaint(node); taintErr != nil {
252+
return ctrl.Result{}, taintErr
253+
}
254+
return r.recoverNode(node, snr)
255+
} else if apiErrors.IsNotFound(err) {
256+
//Node doesn't exist, potentially removed by another remediator such as MDR
257+
return ctrl.Result{}, r.removeFinalizer(snr)
258+
} else {
259+
// report an error
260+
r.logger.Error(err, "failed to get node", "remediation name", snr.Name)
261+
return ctrl.Result{}, err
262+
}
263+
} else {
264+
r.logger.Info("NHC added the timed-out annotation, remediation will be stopped")
265+
events.RemediationStoppedByNHC(r.Recorder, snr)
266+
return ctrl.Result{}, r.updateConditions(remediationTimeoutByNHC, snr)
249267
}
250-
r.logger.Info("NHC added the timed-out annotation, remediation will be stopped")
251-
events.RemediationStoppedByNHC(r.Recorder, snr)
252-
return ctrl.Result{}, r.updateConditions(remediationTimeoutByNHC, snr)
253268
}
254269

255270
if r.getPhase(snr) != fencingCompletedPhase {

0 commit comments

Comments
 (0)