Skip to content

⚠️ Remove the progression timeout from the ClusterObjectSet - #3078

Open
perdasilva wants to merge 1 commit into
operator-framework:mainfrom
perdasilva:remove-clusterobjectset-progress-deadline
Open

perdasilva wants to merge 1 commit into
operator-framework:mainfrom
perdasilva:remove-clusterobjectset-progress-deadline

Conversation

@perdasilva

@perdasilva perdasilva commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

What

Removes the progress-deadline ("progression timeout") behavior and spec.progressDeadlineMinutes field from the ClusterObjectSet. The progress deadline is now owned solely by the ClusterObjectDeployment (COD).

Why

Since the COD owns revision lifecycle (creation, rollout, archival, retention) and enforces its own progress deadline (spec.template.spec.progressDeadlineMinutes, reported on the COD's Progressing condition), the COS's own deadline enforcement is redundant — the COD does not propagate a deadline onto the ClusterObjectSet revisions it creates. This leaves a clean split: the ClusterObjectSet rolls out its objects; the ClusterObjectDeployment owns the deadline.

Changes

  • Remove spec.progressDeadlineMinutes from the ClusterObjectSet API (experimental-only).
  • Remove the COS controller's deadline enforcement: the Ready=False/ProgressDeadlineExceeded marking, its precedence handling (now Superseded > ObjectsNotReady), and the deadline-aware rate-limiter wiring (reverts to the default controller rate limiter).
  • Remove the COS-only pieces of the shared deadline helper (durationUntilDeadline, newDeadlineAwareRateLimiter); the shared deadlineAwareRateLimiter struct remains, still used by the COD.
  • Stop the Helm-storage migration revision builder from setting the field.
  • Remove the two COS @ProgressDeadline e2e scenarios.
  • Regenerate CRDs, manifests, applyconfigurations, the API reference, and the ClusterObjectSets concept doc.

Unchanged: the ClusterObjectDeployment deadline, the ClusterExtension progressDeadlineMinutes field and its routing to the COD template, the ProgressDeadlineExceeded reason constant, and status.completedAt.

Notes

  • ClusterObjectSet is an experimental API; this is an intentional incompatible change with no migration support, per the project's experimental-API policy. Standard manifests are unaffected (the field was experimental-channel-only).
  • ⚠️ crd-diff CI will fail by design (removal of an existing field). Merging requires the crd-diff-override label from a maintainer.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Behavior Changes
    • ClusterObjectSets no longer have a configurable progress deadline or report ProgressDeadlineExceeded. Rollout deadline enforcement is handled by each ClusterObjectDeployment.
    • A deployment’s progress deadline is measured from revision creation until its first successful rollout. Time spent waiting for ClusterObjectSet creation is excluded, and completing a rollout phase does not reset the timer.
  • Documentation
    • Updated ClusterObjectSet guidance to reflect the revised deadline behavior.

@openshift-ci
openshift-ci Bot requested review from fao89 and joelanford October 28, 2026 16:03
@openshift-ci

openshift-ci Bot commented Oct 28, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign kevinrizza for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify

netlify Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit 59597e8
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/6ae21f56b8817bdb76e0f604
😎 Deploy Preview https://deploy-preview-3078--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: aee9f55b-b250-4a17-997b-753f59bce2a2
Commits

Reviewing files that changed from the base of the PR and between b0e0381 and 59597e8.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: b32baca4-f09f-40e1-ab5f-e1f6127e3497
Commits

Reviewing files that changed from the base of the PR and between b3efc8d and 99f7e82.

Files selected for processing: 17
  • api/v1/clusterobjectset_types.go
  • api/v1/validation_test.go
  • applyconfigurations/api/v1/clusterobjectsetspec.go
  • applyconfigurations/api/v1/clusterobjectsetstatus.go
  • applyconfigurations/internal/internal.go
  • docs/draft/concepts/clusterobjectsets.md
  • helm/olmv1/base/object-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
  • internal/object-controller/controllers/clusterobjectdeployment_controller_test.go
  • internal/object-controller/controllers/clusterobjectdeployment_deadline_test.go
  • internal/object-controller/controllers/clusterobjectset_controller.go
  • internal/object-controller/controllers/clusterobjectset_controller_test.go
  • internal/object-controller/controllers/progress_deadline.go
  • internal/object-controller/controllers/progress_deadline_test.go
  • internal/operator-controller/applier/boxcutter.go
  • manifests/experimental-e2e.yaml
  • manifests/experimental.yaml
  • test/e2e/features/revision.feature
Files with no reviewable changes: 14
  • applyconfigurations/api/v1/clusterobjectsetstatus.go
  • internal/object-controller/controllers/clusterobjectdeployment_controller_test.go
  • internal/object-controller/controllers/clusterobjectdeployment_deadline_test.go
  • api/v1/validation_test.go
  • applyconfigurations/internal/internal.go
  • internal/operator-controller/applier/boxcutter.go
  • manifests/experimental.yaml
  • helm/olmv1/base/object-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
  • api/v1/clusterobjectset_types.go
  • internal/object-controller/controllers/clusterobjectset_controller_test.go
  • test/e2e/features/revision.feature
  • manifests/experimental-e2e.yaml
  • applyconfigurations/api/v1/clusterobjectsetspec.go
  • internal/object-controller/controllers/progress_deadline_test.go

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 7 remain after this review.

Walkthrough

The change removes progressDeadlineMinutes from the ClusterObjectSet API and generated specifications. It also removes deadline-based status and requeue handling from the ClusterObjectSet controller, and updates documentation to describe the COD deadline setting.

Changes: ClusterObjectSet progress deadline

Layer / File(s) Summary
Remove the deadline from the ClusterObjectSet contract
api/v1/clusterobjectset_types.go, api/v1/validation_test.go, applyconfigurations/api/v1/*, applyconfigurations/internal/internal.go, helm/olmv1/base/object-controller/crd/experimental/*, manifests/experimental*.yaml, internal/operator-controller/applier/boxcutter.go, docs/draft/concepts/clusterobjectsets.md
The ClusterObjectSet API, generated configurations, and CRD schemas no longer include progressDeadlineMinutes. The documentation describes the deadline configured through spec.template.spec.progressDeadlineMinutes on the COD.
Remove deadline-based reconciliation
internal/object-controller/controllers/clusterobjectset_controller.go, internal/object-controller/controllers/progress_deadline.go, internal/object-controller/controllers/*_test.go, test/e2e/features/revision.feature
The controller no longer sets ProgressDeadlineExceeded or uses a deadline-aware rate limiter. Tests and assertions for the removed deadline behavior are deleted.

Priority: Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Suggested labels: api-diff-lint-override, go-apidiff-override

Suggested reviewers: fao89, dtfranz

Merge Risk: Minimal · previous review 99f7e

No actionable issue is established by this review. The documented CRD-diff override remains a required merge step.

Pre-merge checks: Passed 5
Check name Status Explanation
Description check Passed The description explains what changed, why it changed, affected components, testing changes, compatibility impact, and the required CRD diff override. It does not include the reviewer checklist or rel…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly summarizes the primary change: removing progress-deadline behavior from ClusterObjectSet.
Full details: Description check

Explanation

The description explains what changed, why it changed, affected components, testing changes, compatibility impact, and the required CRD diff override. It does not include the reviewer checklist or related issue links, but the required summary and motivation are complete.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 2 files. (1 skipped: 1 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@perdasilva
perdasilva force-pushed the remove-clusterobjectset-progress-deadline branch from 99f7e82 to b0e0381 Compare October 28, 2026 16:09
The progress deadline is now owned solely by the ClusterObjectDeployment
(COD). Since the COD owns revision lifecycle and enforces its own progress
deadline (spec.template.spec.progressDeadlineMinutes, reported on the COD's
Progressing condition) without propagating one to the ClusterObjectSet
revisions it creates, the COS's own deadline enforcement is redundant.

- Remove spec.progressDeadlineMinutes from the ClusterObjectSet API
  (experimental-only).
- Remove the COS controller's deadline enforcement: the
  Ready=False/ProgressDeadlineExceeded marking, its precedence handling
  (now Superseded > ObjectsNotReady), and the deadline-aware rate-limiter
  wiring (reverts to the default controller rate limiter).
- Remove the COS-only pieces of the shared deadline helper
  (durationUntilDeadline, newDeadlineAwareRateLimiter); the shared
  deadlineAwareRateLimiter struct remains, still used by the COD.
- Stop the Helm-storage migration revision builder from setting the field.
- Remove the two COS @ProgressDeadline e2e scenarios.
- Regenerate CRDs, manifests, applyconfigurations, the API reference, and
  the ClusterObjectSets concept doc.

The ClusterObjectDeployment deadline, the ClusterExtension
progressDeadlineMinutes field and its routing to the COD template, the
ProgressDeadlineExceeded reason constant, and status.completedAt are
unchanged.

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@perdasilva perdasilva changed the title ✨ Remove the progression timeout from the ClusterObjectSet ⚠️ Remove the progression timeout from the ClusterObjectSet Oct 28, 2026
@perdasilva
perdasilva force-pushed the remove-clusterobjectset-progress-deadline branch from b0e0381 to 59597e8 Compare October 28, 2026 16:14

@fao89 fao89 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Oct 28, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

go-apidiff-override lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants