[platform] Fix stale workloads not being deleted
Workloads tracking an object undergoing deletion can be reconciled when the object is marked for deletion, but is not yet removed. After the object is deleted, there is no event to trigger another reconciliation of the workload and it might never get deleted until a global reconcile happens or the controller is restarted. This patch ensures they are requeued in the reconciliation loop. Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
This commit is contained in:
parent
f2a8c3d0d1
commit
38f76f6ad0
1 changed files with 8 additions and 0 deletions
|
|
@ -3,6 +3,7 @@ package controller
|
|||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
|
|
@ -15,6 +16,10 @@ import (
|
|||
cozyv1alpha1 "github.com/cozystack/cozystack/api/v1alpha1"
|
||||
)
|
||||
|
||||
const (
|
||||
deletionRequeueDelay = 30 * time.Second
|
||||
)
|
||||
|
||||
// WorkloadMonitorReconciler reconciles a WorkloadMonitor object
|
||||
type WorkloadReconciler struct {
|
||||
client.Client
|
||||
|
|
@ -52,6 +57,9 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
|
|||
|
||||
// found object, nothing to do
|
||||
if err == nil {
|
||||
if !t.GetDeletionTimestamp().IsZero() {
|
||||
return ctrl.Result{RequeueAfter: deletionRequeueDelay}, nil
|
||||
}
|
||||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue