Skip to content

Commit 3fa9046

Browse files
committed
Debounce the degraded status for flaky conditions
1 parent af37b11 commit 3fa9046

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

pkg/operator/credentialsrequest/status.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package credentialsrequest
33
import (
44
"context"
55
"fmt"
6+
"time"
67

78
log "github.com/sirupsen/logrus"
89

@@ -131,7 +132,9 @@ func computeStatusConditions(
131132
for _, t := range minterv1.FailureConditionTypes {
132133
failureCond := utils.FindCredentialsRequestCondition(cr.Status.Conditions, t)
133134
if failureCond != nil && failureCond.Status == corev1.ConditionTrue {
134-
foundFailure = true
135+
if time.Since(failureCond.LastTransitionTime.Time) > 5*time.Minute {
136+
foundFailure = true
137+
}
135138
break
136139
}
137140
}

pkg/operator/podidentity/podidentitywebhook_controller.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ type staticResourceReconciler struct {
285285
conditions []configv1.ClusterOperatorStatusCondition
286286
cache resourceapply.ResourceCache
287287
podIdentityType PodIdentityManifestSource
288+
degradedSince time.Time
288289
}
289290

290291
var _ reconcile.Reconciler = &staticResourceReconciler{}
@@ -294,16 +295,22 @@ func (r *staticResourceReconciler) Reconcile(ctx context.Context, request reconc
294295
err := r.ReconcileResources(ctx)
295296
if err != nil {
296297
r.logger.Errorf("reconciliation failed, retrying in %s", retryInterval.String())
297-
r.conditions = []configv1.ClusterOperatorStatusCondition{
298-
{
299-
Type: configv1.OperatorDegraded,
300-
Status: configv1.ConditionTrue,
301-
Reason: reasonStaticResourceReconcileFailed,
302-
Message: fmt.Sprintf("static resource reconciliation failed: %v", err),
303-
},
298+
if r.degradedSince.IsZero() {
299+
r.degradedSince = time.Now()
300+
} else if time.Since(r.degradedSince) > 5*time.Minute {
301+
r.conditions = []configv1.ClusterOperatorStatusCondition{
302+
{
303+
Type: configv1.OperatorDegraded,
304+
Status: configv1.ConditionTrue,
305+
Reason: reasonStaticResourceReconcileFailed,
306+
Message: fmt.Sprintf("static resource reconciliation failed: %v", err),
307+
},
308+
}
304309
}
305310
return reconcile.Result{RequeueAfter: retryInterval}, err
306311
}
312+
313+
r.degradedSince = time.Time{}
307314
r.conditions = []configv1.ClusterOperatorStatusCondition{}
308315
return reconcile.Result{}, nil
309316
}

0 commit comments

Comments
 (0)