diff --git a/controllers/githubactionrunner_controller.go b/controllers/githubactionrunner_controller.go index 3594f6c1..7e5a170f 100644 --- a/controllers/githubactionrunner_controller.go +++ b/controllers/githubactionrunner_controller.go @@ -359,7 +359,7 @@ func (r *GithubActionRunnerReconciler) unregisterRunner(ctx context.Context, cr // handleFinalization will remove runner from github based on presence of finalizer func (r *GithubActionRunnerReconciler) handleFinalization(ctx context.Context, cr *garov1alpha1.GithubActionRunner, list podRunnerPairList) error { - for _, item := range list.getPodsBeingDeleted() { + for _, item := range list.getPodsBeingDeletedOrEvicted() { // TODO - cause of failure should be checked more closely, if it does not exist we can ignore it. If it is a comms error we should stick around if err := r.unregisterRunner(ctx, cr, item); err != nil { return err diff --git a/controllers/podrunner_types.go b/controllers/podrunner_types.go index a4e2067f..3796b548 100644 --- a/controllers/podrunner_types.go +++ b/controllers/podrunner_types.go @@ -93,8 +93,8 @@ func (r podRunnerPairList) getIdles(sortOrder v1alpha1.SortOrder, minTTL time.Du return idles } -func (r podRunnerPairList) getPodsBeingDeleted() []podRunnerPair { +func (r podRunnerPairList) getPodsBeingDeletedOrEvicted() []podRunnerPair { return funk.Filter(r.pairs, func(pair podRunnerPair) bool { - return util.IsBeingDeleted(&pair.pod) + return util.IsBeingDeleted(&pair.pod) || isEvicted(&pair.pod) }).([]podRunnerPair) } diff --git a/controllers/podutil.go b/controllers/podutil.go new file mode 100644 index 00000000..3dffc375 --- /dev/null +++ b/controllers/podutil.go @@ -0,0 +1,10 @@ +package controllers + +import ( + v1 "k8s.io/api/core/v1" + "strings" +) + +func isEvicted(pod *v1.Pod) bool { + return strings.Contains(pod.Status.Reason, "Evicted") +}