WIP: OCPBUGS-105876: Wire availableInertia into the olm StatusSyncer - #233
WIP: OCPBUGS-105876: Wire availableInertia into the olm StatusSyncer#233fgiudici wants to merge 2 commits into
Conversation
clusteroperator/olm briefly flips Available=False (sub-second) during OCP upgrades because catalogd's soft anti-affinity can co-schedule both replicas on one master; when MCO drains that node both pods get evicted and AvailableReplicas hits 0 momentarily. StatusSyncer currently propagates that with no grace period. Chain WithAvailableInertia (5s) onto the existing NewClusterOperatorStatusController call, mirroring the WithDegradedInertia pattern already available on StatusSyncer. Requires the availableInertia addition to openshift/library-go's StatusSyncer (see next commit). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
WithAvailableInertia (used by the previous commit) does not exist in the currently vendored library-go (v0.0.0-20251107090138-0de9712313a5) — it only exists on the local, unpushed "availableInertia" branch of openshift/library-go. Overlay that branch's content here (content only; go.mod, go.sum, and vendor/modules.txt are intentionally untouched) purely so this branch builds and tests locally today. `go mod tidy`/`go mod vendor` were not used for a real bump: this repo's current dependency graph has an unrelated, pre-existing break (k8s.io/kubectl needs k8s.io/api/scheduling/v1alpha1, missing from the k8s.io/api version tidy wants to pick) that surfaces as soon as a full re-resolution is attempted. Not mergeable as-is: `make verify-deps` will fail on this (it reruns go mod tidy/vendor from scratch and there's no deps.diff registering this override). This commit exists to keep the branch buildable while local; it must be dropped/replaced once the library-go PR is pushed, reviewed, and merged, via a real `go get github.com/openshift/library-go@<merged-sha> && go mod vendor`. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
|
Pipeline controller notification For optional jobs, comment This repository is configured in: LGTM mode |
|
@fgiudici: This pull request references Jira Issue OCPBUGS-105876, which is invalid:
Comment The bug has been updated to refer to the pull request using the external bug tracker. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
Skipping CI for Draft Pull Request. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: openshift/coderabbit/.coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
WalkthroughThe cluster operator status controller now applies a 5-second availability inertia instead of its default configuration. ChangesCluster operator status
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: 🟡 Moderate · up to The change currently relies on an unreleased library-go API and a manual vendor overlay without synchronized dependency metadata, causing dependency verification to fail. It is not merge-ready until the upstream dependency lands and vendoring is regenerated. Suggested reviewers: 🚥 Pre-merge checks | ✅ 15✅ Passed checks (15 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: fgiudici The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
/lgtm |
|
Scheduling tests matching the |
|
/test deps |
|
@fgiudici: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
clusteroperator/olm may intermittently flips Available=False for a sub-second during OCP upgrades tripping the CVO invariant monitor test.
See OCPBUGS-105876 for the full scenario analysis and reasoning.
The idea is to add a new
availableInertiagrace period on library-go's StatusSyncer (see openshift/library-go#2426).Not mergeable as-is, currently in draft:
WithAvailableInertiadoesn't exist in the currently vendored library-go. The second commit manually overlays the vendored status_controller.go with the unmerged branch's content (content only; go.mod/go.sum/vendor/modules.txt intentionally untouched) so this branch builds and tests locally.It must be dropped and replaced with a real
go get github.com/openshift/library-go@<sha> && go mod vendoronce the library-go PR merges upstream.make verify-depswill fail on this in its current state.Importing the library from the PR branch requires more work since the newer version triggers cascade dependencies updates. This will be worked on later, the idea here was to start to share the PR to discuss the approach first.