Skip to content

OCPBUGS-109521: Remove unscoped CSV watch from ClusterNotUpgradeableAlert - #17013

Open
rsacherer wants to merge 1 commit into
openshift:release-4.22from
rsacherer:OCPBUGS-109521-remove-csv-watch
Open

OCPBUGS-109521: Remove unscoped CSV watch from ClusterNotUpgradeableAlert#17013
rsacherer wants to merge 1 commit into
openshift:release-4.22from
rsacherer:OCPBUGS-109521-remove-csv-watch

Conversation

@rsacherer

Copy link
Copy Markdown

This is a backport of #16904 to release-4.22.

The ClusterNotUpgradeableAlert component fetched all ClusterServiceVersions cluster-wide (resulting in up to 600MB object sizes in the browser on clusters with 350+ namespaces and lots of operators) on every visit to Cluster Settings when Upgradeable=False was set.

The only use of CSVs was to decide whether or not to show navigation links.

For installed operators this was ineffective: CSV status.conditions use phase/reason fields, not type/status, so getConditionUpgradeableFalse() always returned undefined on CSVs — meaning notUpgradeableCSVsPresent was permanently false and the 'View installed Operators' link was never shown.

Additionally the link URL used /k8s/ns/all-namespaces/ instead of /k8s/all-namespaces/, causing 'No Operators found' on navigation.

Fix: remove both the ClusterOperator and CSV watches. Both navigation links are now always shown when the alert renders — correct since the alert only mounts when Upgradeable=False is already confirmed on ClusterVersion. Use resourceListPathFromModel() for the correct all-namespaces URL.

Backport note: On release-4.22 the ClusterNotUpgradeableAlert lives in cluster-settings.tsx (not cluster-settings-utils.tsx as in main) due to the file reorganisation that happened between 4.22 and main. The fix is otherwise identical.

https://issues.redhat.com/browse/OCPBUGS-109521

…lert

The ClusterNotUpgradeableAlert component fetched all ClusterServiceVersions
cluster-wide (resulting in up to 600MB object sizes in the browser on
clusters with 350+ namespaces and lots of operators) on every visit to
Cluster Settings when Upgradeable=False was set.

The only use of CSVs was to decide whether or not to show navigation links.

For installed operators this was ineffective: CSV status.conditions use
phase/reason fields, not type/status, so getConditionUpgradeableFalse()
always returned undefined on CSVs — meaning notUpgradeableCSVsPresent was
permanently false and the 'View installed Operators' link was never shown.

Additionally the link URL used /k8s/ns/all-namespaces/ instead of
/k8s/all-namespaces/, causing 'No Operators found' on navigation.

Fix: remove both the ClusterOperator and CSV watches. Both navigation links
are now always shown when the alert renders — correct since the alert only
mounts when Upgradeable=False is already confirmed on ClusterVersion. Use
resourceListPathFromModel() for the correct all-namespaces URL.

https://issues.redhat.com/browse/OCPBUGS-109521

Signed-off-by: Raimund Sacherer <switch1024@gmail.com>
@openshift-ci
openshift-ci Bot requested review from Leo6Leo and jhadvig August 17, 2026 15:21
@openshift-ci-robot openshift-ci-robot added the jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Aug 17, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@rsacherer: This pull request references Jira Issue OCPBUGS-109521, which is invalid:

  • release note text must be set and not match the template OR release note type must be set to "Release Note Not Required". For more information you can reference the OpenShift Bug Process.

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

This is a backport of #16904 to release-4.22.

The ClusterNotUpgradeableAlert component fetched all ClusterServiceVersions cluster-wide (resulting in up to 600MB object sizes in the browser on clusters with 350+ namespaces and lots of operators) on every visit to Cluster Settings when Upgradeable=False was set.

The only use of CSVs was to decide whether or not to show navigation links.

For installed operators this was ineffective: CSV status.conditions use phase/reason fields, not type/status, so getConditionUpgradeableFalse() always returned undefined on CSVs — meaning notUpgradeableCSVsPresent was permanently false and the 'View installed Operators' link was never shown.

Additionally the link URL used /k8s/ns/all-namespaces/ instead of /k8s/all-namespaces/, causing 'No Operators found' on navigation.

Fix: remove both the ClusterOperator and CSV watches. Both navigation links are now always shown when the alert renders — correct since the alert only mounts when Upgradeable=False is already confirmed on ClusterVersion. Use resourceListPathFromModel() for the correct all-namespaces URL.

Backport note: On release-4.22 the ClusterNotUpgradeableAlert lives in cluster-settings.tsx (not cluster-settings-utils.tsx as in main) due to the file reorganisation that happened between 4.22 and main. The fix is otherwise identical.

https://issues.redhat.com/browse/OCPBUGS-109521

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.

@openshift-ci openshift-ci Bot added the component/core Related to console core functionality label Aug 17, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

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

Labels

component/core Related to console core functionality jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants