Skip to content

Commit 6b78b23

Browse files
fix: Allow spec changes after ProgressDeadlineExceeded
Once ProgressDeadlineExceeded is set, the controller predicate was blocking ALL updates including spec changes like lifecycleState=Archived. This prevented timed-out ClusterObjectSets from being archived. Now allows generation/spec changes while still suppressing status-only churn.
1 parent 43351b2 commit 6b78b23

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

internal/operator-controller/controllers/clusterobjectset_controller.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,16 @@ func (c *ClusterObjectSetReconciler) SetupWithManager(mgr ctrl.Manager) error {
356356
return true
357357
}
358358
if cnd := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterObjectSetTypeProgressing); cnd != nil && cnd.Status == metav1.ConditionFalse && cnd.Reason == ocv1.ReasonProgressDeadlineExceeded {
359+
// Progress deadline exceeded - allow generation/spec changes but suppress status-only churn
360+
oldRev, ok := e.ObjectOld.(*ocv1.ClusterObjectSet)
361+
if !ok {
362+
return true
363+
}
364+
// Allow if generation changed (indicates spec change, including lifecycleState transitions)
365+
if oldRev.Generation != rev.Generation {
366+
return true
367+
}
368+
// Suppress status-only updates
359369
return false
360370
}
361371
return true

0 commit comments

Comments
 (0)