SIGN IN SIGN UP

🐛 fix: allow reconciliation of deadline-exceeded ClusterObjectSets (#2643)

* 🐛 fix: allow reconciliation of deadline-exceeded ClusterObjectSets

Previously, a watch predicate dropped update events for ClusterObjectSets
with ProgressDeadlineExceeded, preventing them from being archived or
cleaned up.

Remove the predicate and replace the inline deadline logic in Reconcile
with an enforceProgressDeadline() helper and a progressDeadline()
function that computes the absolute deadline from spec and metadata.

Add a deadline-aware rate limiter that caps exponential backoff at the
deadline and allows one immediate requeue when it passes, without
inspecting status conditions.

Add an e2e scenario that forces ProgressDeadlineExceeded, archives the
COS, and verifies resource cleanup.

* test: add unit test for recovery from ProgressDeadlineExceeded to Succeeded

* test: add table-driven unit tests for durationUntilDeadline

* docs: add comment clarifying Blocked takes precedence over ProgressDeadlineExceeded

* refactor: hoist nonTerminalReasons map to package-level var

* refactor: pass logger into markAsProgressing instead of using global log.Log

* test: add e2e test for recovery from ProgressDeadlineExceeded to Succeeded
J
Joe Lanford committed
74e39f589a9b3859b482b275427809a60bf0cc37
Parent: 4ce4bab
Committed by GitHub <noreply@github.com> on 4/29/2026, 5:04:57 AM