Skip to content

OCPBUGS-85426: improve DCM tests to reduce flakiness in endpoints#31173

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
jcmoraisjr:OCPBUGS-85426-dcm-test-flakiness
Jun 26, 2026
Merged

OCPBUGS-85426: improve DCM tests to reduce flakiness in endpoints#31173
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
jcmoraisjr:OCPBUGS-85426-dcm-test-flakiness

Conversation

@jcmoraisjr

@jcmoraisjr jcmoraisjr commented May 13, 2026

Copy link
Copy Markdown
Member

Addressing a race when patching endpoints resource:

  • Polling EndpointSlice resource to ensure its controller created it after we create the Endpoints resource;
  • Polling EndpointSlice, waiting for it to be updated after we update the Endpoint resource.

Also, dumping all endpoints and endpointSlice in the test namespace in case of a test failure, which helps to correlate the current state and what should be expected in the test scenario.

Example of deployments state log:

deployment state: replicas=4 pods=route-scale-in-5b7b4f6b8c-9ncjg/Running/10.128.1.27 // route-scale-in-5b7b4f6b8c-ck45n/Running/10.128.1.28 // route-scale-in-5b7b4f6b8c-srffr/Running/10.128.1.29 // route-scale-in-5b7b4f6b8c-v9hm2/Running/10.128.1.26

Example of Endpoints and EndpointSlice resources listed if the test fails:

Endpoints:
NAME                  ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in        10.128.1.26,10.128.1.27,10.128.1.28,10.128.1.29                       9376
route-scale-in-khbh5  10.128.1.26                                                           9376

EndpointSlices:
NAME                        SERVICE               ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in-khbh5-8ncmh  route-scale-in-khbh5  10.128.1.26                                                           9376
route-scale-in-rrhzv        route-scale-in        10.128.1.27,10.128.1.28,10.128.1.29,10.128.1.26                       9376

https://redhat.atlassian.net/browse/OCPBUGS-85426

Summary by CodeRabbit

  • Tests
    • Improved router test observability with richer, tabular diagnostics for Endpoints and EndpointSlices, plus enhanced route/ingress and deployment state output during failures.
    • Added clearer per-iteration progress logging for HAProxy config manager stress scenarios and exposed more deployment pod details during churn.
    • Strengthened detached service setup by polling for deprecated resources and more reliably detecting EndpointSlice presence.
    • Reworked scale-in endpoint handling with conflict-aware retries, address-preserving mirroring verification, and improved address comparison logic.

@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: automatic mode

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. labels May 13, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@jcmoraisjr: This pull request references Jira Issue OCPBUGS-85426, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @melvinjoseph86

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

Details

In response to this:

Addressing some flakes in the DCM e2e tests:

  • Race patching endpoints resource: add a polling to ensure the endpoints resource was created. Also, dump all endpoints and endpointSlice in the test namespace in case of a test failure.
  • Timeout calling the router: increase the timeout, reading all the fast ones from a single const. Also, dumping router logs which should help to correlate failures when calling its service.
  • Router container not found: router pod should be reporting container as running and healthy, but it was not running. Attaching the router log, which should help to explain why router container was not found.

Example of testing deployment state log, added whenever it is scaled:

deployment state: replicas=4 pods=route-scale-in-5b7b4f6b8c-9ncjg/Running/10.128.1.27 // route-scale-in-5b7b4f6b8c-ck45n/Running/10.128.1.28 // route-scale-in-5b7b4f6b8c-srffr/Running/10.128.1.29 // route-scale-in-5b7b4f6b8c-v9hm2/Running/10.128.1.26

Example of Endpoints and EndpointSlice resources listed if the test fails:

Endpoints:
NAME                  ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in        10.128.1.26,10.128.1.27,10.128.1.28,10.128.1.29                       9376
route-scale-in-khbh5  10.128.1.26                                                           9376

EndpointSlices:
NAME                        SERVICE               ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in-khbh5-8ncmh  route-scale-in-khbh5  10.128.1.26                                                           9376
route-scale-in-rrhzv        route-scale-in        10.128.1.27,10.128.1.28,10.128.1.29,10.128.1.26                       9376

https://redhat.atlassian.net/browse/OCPBUGS-85426

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 requested a review from melvinjoseph86 May 13, 2026 19:52
@coderabbitai

coderabbitai Bot commented May 13, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

This PR improves router e2e test observability and reliability by adding tabular Endpoints and EndpointSlice output helpers, deployment state fetch/print infrastructure used throughout scale and churn operations, and more robust Endpoints polling with improved EndpointSlice synchronization.

Changes

Router Diagnostics and Robustness

Layer / File(s) Summary
Failure diagnostics and output helpers
test/extended/router/config_manager_ingress.go, test/extended/router/stress.go
Initializes an admin routeClient and extends AfterEach failure handler to list Routes and emit outputIngress. Adds strconv and discoveryv1 imports and introduces outputEndpoints() and outputEndpointSlice() which render Kubernetes resource objects as formatted tables partitioned by ready/not-ready status and log via e2e.Logf.
Deployment state tracking infrastructure
test/extended/router/config_manager_ingress.go
Introduces fetchPods(ctx) to retrieve pods from the exposed common deployment, adds printDeploymentState(ctx) to best-effort fetch and log pod name, phase, and pod IPs, and refactors fetchServiceReplicas(ctx) to reuse fetchPods() and build backend server names directly from pod objects.
Test flow integration and endpoint robustness
test/extended/router/config_manager_ingress.go
Integrates printDeploymentState() calls into createDeploymentStack() (captures exposeDeployment results), scaleDeployment() (logs before return), and balance/churn and steady PID loops. Replaces single Endpoints GET with polling retry loop in detached service creation, extends EndpointSlice wait/poll timing, and substantially rewrites scaleInEndpoints() with timeout parameter, retry-on-conflict workflow, and EndpointSlice address matching via new endpointSliceMatchesAddresses() helper. Updates test loop logging to use framework.Logf for per-iteration clarity and adds clarifying comments for namespace placement and SNO safety.

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 12 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Test Structure And Quality ⚠️ Warning The code violates multiple quality requirements: (1) Assertions lack meaningful failure messages - numerous o.Expect(err).NotTo(o.HaveOccurred()) without context messages; (2) The `endpointSliceM... Add failure messages to assertions. Fix endpointSliceMatchesAddresses() to track IP counts and detect duplicates. Clear NotReadyAddresses = nil in scaleInEndpoints(). Propagate non-retriable API errors (NotFound checks) instead of...
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning config_manager_ingress.go line 408 hardcodes IPv4 address "10.0.0.1" in allowlist test without IPv6 fallback, failing in IPv6-only disconnected environments. Add IPv6 address fallback for the "allowlist denied" test case (line 408), similar to how execPod.ipAddress is used in line 395. Use a corresponding IPv6 address when running on IPv6 clusters.
✅ Passed checks (12 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main objective of the PR: improving DCM tests to reduce flakiness related to endpoints by adding polling, better diagnostics, and timing adjustments.
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.
Stable And Deterministic Test Names ✅ Passed All test names in the PR are stable and deterministic. They contain only static, descriptive strings with no dynamic values like pod names, IPs, timestamps, or generated identifiers.
Microshift Test Compatibility ✅ Passed No new Ginkgo test declarations (It, Describe, Context, When) are added. The PR only adds utility helper functions (outputEndpoints, outputEndpointSlice) that use standard Kubernetes APIs (corev1.E...
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR—only existing tests are modified and helper functions are added. The check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only test files (test/extended/router/) with no changes to production deployment manifests, operator code, or controllers. Topology-aware scheduling check applies only to production code.
Ote Binary Stdout Contract ✅ Passed All new code uses framework.Logf or e2e.Logf for logging, writing only to bytes.Buffer before framework logging. No process-level stdout writes detected; all code is within test blocks.
No-Weak-Crypto ✅ Passed PR adds test helper functions for logging endpoint and deployment state. No weak cryptographic algorithms, custom crypto implementations, or non-constant-time secret comparisons are introduced.
Container-Privileges ✅ Passed PR adds test helper functions and improves endpoint polling. No new container manifests with privileged settings (privileged: true, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalatio...
No-Sensitive-Data-In-Logs ✅ Passed All new logging functions (outputIngress, outputEndpoints, outputEndpointSlice, printDeploymentState) log only non-sensitive test infrastructure data: pod names, IP addresses, port numbers, statuse...
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 13, 2026
@openshift-ci openshift-ci Bot requested review from Thealisyed and gcs278 May 13, 2026 19:53
@openshift-ci-robot

Copy link
Copy Markdown

@jcmoraisjr: This pull request references Jira Issue OCPBUGS-85426, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @melvinjoseph86

Details

In response to this:

Addressing some flakes in the DCM e2e tests:

  • Race patching endpoints resource: add a polling to ensure the endpoints resource was created. Also, dump all endpoints and endpointSlice in the test namespace in case of a test failure.
  • Timeout calling the router: increase the timeout, reading all the fast ones from a single const. Also, dumping router logs which should help to correlate failures when calling its service.
  • Router container not found: router pod should be reporting container as running and healthy, but it was not running. Attaching the router log, which should help to explain why router container was not found.

Example of testing deployment state log, added whenever it is scaled:

deployment state: replicas=4 pods=route-scale-in-5b7b4f6b8c-9ncjg/Running/10.128.1.27 // route-scale-in-5b7b4f6b8c-ck45n/Running/10.128.1.28 // route-scale-in-5b7b4f6b8c-srffr/Running/10.128.1.29 // route-scale-in-5b7b4f6b8c-v9hm2/Running/10.128.1.26

Example of Endpoints and EndpointSlice resources listed if the test fails:

Endpoints:
NAME                  ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in        10.128.1.26,10.128.1.27,10.128.1.28,10.128.1.29                       9376
route-scale-in-khbh5  10.128.1.26                                                           9376

EndpointSlices:
NAME                        SERVICE               ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in-khbh5-8ncmh  route-scale-in-khbh5  10.128.1.26                                                           9376
route-scale-in-rrhzv        route-scale-in        10.128.1.27,10.128.1.28,10.128.1.29,10.128.1.26                       9376

https://redhat.atlassian.net/browse/OCPBUGS-85426

Summary by CodeRabbit

  • Tests
  • Enhanced router test observability with improved logging and debug output for network endpoints and configuration details.
  • Stabilized timing-sensitive test operations through configurable timeout handling.
  • Expanded test failure diagnostics to capture detailed state information for troubleshooting.

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-merge-bot openshift-merge-bot Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label May 13, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@jcmoraisjr jcmoraisjr force-pushed the OCPBUGS-85426-dcm-test-flakiness branch from 3dcf0fe to f272628 Compare May 18, 2026 13:22
@jcmoraisjr jcmoraisjr changed the title OCPBUGS-85426: improve DCM tests to reduce flakiness OCPBUGS-85426: improve DCM tests to reduce flakiness in endpoints May 18, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@melvinjoseph86

Copy link
Copy Markdown
Contributor

/jira-refresh

@melvinjoseph86

Copy link
Copy Markdown
Contributor

cc @rhamini3

@melvinjoseph86

Copy link
Copy Markdown
Contributor

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown

@melvinjoseph86: This pull request references Jira Issue OCPBUGS-85426, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)

No GitHub users were found matching the public email listed for the QA contact in Jira (iamin@redhat.com), skipping review request.

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

Details

In response to this:

/jira refresh

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.

@jcmoraisjr jcmoraisjr force-pushed the OCPBUGS-85426-dcm-test-flakiness branch from f272628 to 1a4ff75 Compare May 20, 2026 12:35

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/extended/router/config_manager_ingress.go`:
- Around line 71-83: The list calls swallow errors; change each call to capture
the error (routes, err :=
routeClient.RouteV1().Routes(oc.Namespace()).List(...); endpoints, err :=
kubeClient.CoreV1().Endpoints(oc.Namespace()).List(...); epsList, err :=
kubeClient.DiscoveryV1().EndpointSlices(oc.Namespace()).List(...)) and if err !=
nil log the error with context (e.g. include namespace and operation) before
attempting to output items; update the branches that currently call
outputIngress, outputEndpoints, outputEndpointSlice to still run when results
exist but ensure the err is logged (using the test/logger available in the file,
e.g. framework.Logf/t.Logf or the existing logger) so failed specs include
actionable diagnostics.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 30a7ec20-63d2-4427-8031-a2cc9653b227

📥 Commits

Reviewing files that changed from the base of the PR and between f272628 and 1a4ff75.

📒 Files selected for processing (2)
  • test/extended/router/config_manager_ingress.go
  • test/extended/router/stress.go

Comment thread test/extended/router/config_manager_ingress.go
@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test verify

@bentito

bentito commented May 20, 2026

Copy link
Copy Markdown
Contributor

/assign @bentito

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@jcmoraisjr jcmoraisjr force-pushed the OCPBUGS-85426-dcm-test-flakiness branch from 1a4ff75 to 7ae081b Compare May 21, 2026 11:59

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
test/extended/router/stress.go (2)

699-699: 💤 Low value

Nit: simplify boolean comparison.

*ready == true can be written as just *ready. go vet/linters typically flag this as S1002.

Proposed change
-			if ready := ep.Conditions.Ready; ready == nil || *ready == true {
+			if ready := ep.Conditions.Ready; ready == nil || *ready {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/extended/router/stress.go` at line 699, The boolean comparison is overly
verbose: in the condition that checks ep.Conditions.Ready, replace the explicit
comparison "*ready == true" with the simpler dereference "*ready" so the if
becomes "if ready := ep.Conditions.Ready; ready == nil || *ready { ... }";
update the conditional around ep.Conditions.Ready accordingly to satisfy linters
like S1002.

667-679: 💤 Low value

Optional: hoist resumeAddrs out of the subset loop and simplify boolean check.

resumeAddrs is redefined on every Subsets iteration; it can be a package-level helper (or defined once above the loop). Also consider renaming to summarizeAddrs for clarity — "resume" reads as the Portuguese/Spanish cognate of "summarize" rather than the English meaning. Purely stylistic; no behavior impact.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/extended/router/stress.go` around lines 667 - 679, The inline function
resumeAddrs defined inside the Subsets iteration should be hoisted so it’s
defined once (either as a package-level helper or above the loop) and renamed to
summarizeAddrs for clarity; update calls inside the loop to use
summarizeAddrs(addrs). While moving it, simplify the logic that picks the
address by returning the first non-empty of addr.IP or addr.Hostname (instead of
nested if/else) and keep the join behavior the same so the behavior of functions
referencing Subsets remains unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@test/extended/router/stress.go`:
- Line 699: The boolean comparison is overly verbose: in the condition that
checks ep.Conditions.Ready, replace the explicit comparison "*ready == true"
with the simpler dereference "*ready" so the if becomes "if ready :=
ep.Conditions.Ready; ready == nil || *ready { ... }"; update the conditional
around ep.Conditions.Ready accordingly to satisfy linters like S1002.
- Around line 667-679: The inline function resumeAddrs defined inside the
Subsets iteration should be hoisted so it’s defined once (either as a
package-level helper or above the loop) and renamed to summarizeAddrs for
clarity; update calls inside the loop to use summarizeAddrs(addrs). While moving
it, simplify the logic that picks the address by returning the first non-empty
of addr.IP or addr.Hostname (instead of nested if/else) and keep the join
behavior the same so the behavior of functions referencing Subsets remains
unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 108561fd-89f8-4529-b2a1-2862fa2cac51

📥 Commits

Reviewing files that changed from the base of the PR and between 1a4ff75 and 7ae081b.

📒 Files selected for processing (2)
  • test/extended/router/config_manager_ingress.go
  • test/extended/router/stress.go

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@jcmoraisjr jcmoraisjr force-pushed the OCPBUGS-85426-dcm-test-flakiness branch from 7ae081b to a817ecf Compare June 18, 2026 22:22
@jcmoraisjr

Copy link
Copy Markdown
Member Author

@mdbooth I refactored a method that was causing the race you reported, thanks for reaching out.

@bentito I rebased the commit so it's hard to find the difference. I only refactored scaleInEndpoints() which is now patching only Endpoints, since EndpointSlice follows the changes via its controller.

/unhold

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jun 18, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/retest-required

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-gcp-ovn-upgrade

1 similar comment
@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-gcp-ovn-upgrade

return false
}
for _, ep := range eps {
if len(ep.Addresses) == 0 || !slices.ContainsFunc(targetAddresses, func(addr corev1.EndpointAddress) bool { return addr.IP == ep.Addresses[0] }) {

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.

I think [0] might be brittle, better to iterate and see if contains?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This is by the spec:

https://github.com/kubernetes/api/blob/70b37e4a198597ec99d5424c438c42e7a6620e3d/discovery/v1/types.go#L92-L102

	// EndpointSlices generated by the EndpointSlice
	// controller will always have exactly 1 address. No semantics are defined for
	// additional addresses beyond the first, and kube-proxy does not look at them.

@bentito

bentito commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

just one nit comment.
/lgtm

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

openshift-ci Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bentito, jcmoraisjr

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

The pull request process is described 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

@rhamini3

Copy link
Copy Markdown
Contributor

/test e2e-gcp-ovn-techpreview

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jun 24, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@rhamini3: This PR has been marked as verified by @rhamini3.

Details

In response to this:

tested operator changes on 5.0 cluster

% oc -n openshift-ingress get pods
NAME                              READY   STATUS    RESTARTS      AGE
router-default-785d657597-cwjks   2/2     Running   0             71m
router-default-785d657597-r4c6d   2/2     Running   3 (73m ago)   85m

router container logs
% oc -n openshift-ingress logs router-default-785d657597-cwjks -c router 
I0624 18:58:07.631632      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 18:58:12.629498      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 18:58:21.088146      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 18:58:30.952481      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 18:58:35.953332      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 18:59:13.749098      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 18:59:18.749535      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 19:00:29.529021      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 19:00:34.530284      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"
I0624 19:00:49.258766      17 router.go:719] "msg"="router reloaded" "logger"="template" "mode"="sidecar"

3 containers in the router pod

Init Containers:
 init-router:
   Container ID:  cri-o://875973a800ff2d3f07717affe86a1502ab3c76e3360f82a1796243b3eb2832b8
   Image:         registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945
   Image ID:      registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945
   Port:          <none>
   Host Port:     <none>
   Command:
     /bin/bash
     -c
     cp -R -p /var/lib/haproxy/* /mnt/config/
   State:          Terminated
     Reason:       Completed
     Exit Code:    0
     Started:      Wed, 24 Jun 2026 14:58:04 -0400
     Finished:     Wed, 24 Jun 2026 14:58:04 -0400
   Ready:          True
   Restart Count:  0
   Environment:    <none>
   Mounts:
     /mnt/config from haproxy-config (rw)
 haproxy:
   Container ID:  cri-o://d86468bdab401239d27534a3eeed3aca2c0d916ca6a60eb938ed06a8eedf0480
   Image:         registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945
   Image ID:      registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945
   Port:          <none>
   Host Port:     <none>
   Command:
     /var/lib/haproxy/start-haproxy
   Args:
     -W
     -db
     -S
     /var/lib/haproxy/run/admin.sock,mode,600
     -f
     /var/lib/haproxy/conf/haproxy.config
   State:          Running
     Started:      Wed, 24 Jun 2026 14:58:05 -0400
   Ready:          True
   Restart Count:  0
   Requests:
     cpu:        100m
     memory:     256Mi
   Liveness:     exec [/bin/sh -c echo show version | socat - /var/lib/haproxy/run/haproxy.sock] delay=0s timeout=1s period=10s #success=1 #failure=3
   Readiness:    exec [/bin/sh -c echo show version | socat - /var/lib/haproxy/run/haproxy.sock] delay=0s timeout=1s period=10s #success=1 #failure=3
   Startup:      exec [/bin/sh -c echo show version | socat - /var/lib/haproxy/run/admin.sock] delay=0s timeout=1s period=1s #success=1 #failure=120
   Environment:  <none>
   Mounts:
     /etc/pki/tls/private from default-certificate (ro)
     /var/lib/haproxy from haproxy-config (rw)
     /var/run/configmaps/service-ca from service-ca-bundle (ro)
Containers:
 router:
   Container ID:   cri-o://14e6447d8121c42b91255868706f0271fd4f37c7c52fb5a9938044b912705842
   Image:          registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945
   Image ID:       registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945
   Ports:          80/TCP, 443/TCP, 1936/TCP
   Host Ports:     0/TCP, 0/TCP, 0/TCP
   State:          Running
     Started:      Wed, 24 Jun 2026 14:58:07 -0400
   Ready:          True
   Restart Count:  0

 Type    Reason          Age   From               Message
 ----    ------          ----  ----               -------
 Normal  Scheduled       94m   default-scheduler  Successfully assigned openshift-ingress/router-default-785d657597-cwjks to ip-10-0-30-196.us-east-2.compute.internal
 Normal  AddedInterface  94m   multus             Add eth0 [10.128.2.16/23] from ovn-kubernetes
 Normal  Pulling         94m   kubelet            Pulling image "registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945"
 Normal  Pulled          94m   kubelet            Successfully pulled image "registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945" in 1.805s (1.805s including waiting). Image size: 305841524 bytes.
 Normal  Created         94m   kubelet            Container created
 Normal  Started         94m   kubelet            Container started
 Normal  Pulled          94m   kubelet            Container image "registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945" already present on machine and can be accessed by the pod
 Normal  Created         94m   kubelet            Container created
 Normal  Started         94m   kubelet            Container started
 Normal  Pulled          94m   kubelet            Container image "registry.build10.ci.openshift.org/ci-ln-vcdjlft/stable@sha256:f4a74c11482efa74a1bd2698fb434aa565782b2e23c16702dc94c73ab9234945" already present on machine and can be accessed by the pod
 Normal  Created         94m   kubelet            Container created
 Normal  Started         94m   kubelet            Container started

confirmed that haproxy container contains all routes and expected version

% oc -n openshift-ingress logs router-default-785d657597-cwjks -c haproxy
Starting HAProxy. SIGUSR1 timeout is 30s
[NOTICE]   (4) : Reloading HAProxy
[WARNING]  (4636) : Proxy public stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy public_ssl stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy fe_sni stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy fe_no_sni stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_sni stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_no_sni stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy openshift_default stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_edge_http:default:edge-route stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_secure:default:reen-route stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_http:default:unsec-route stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_tcp:openshift-authentication:oauth-openshift stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_secure:openshift-console:console stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_edge_http:openshift-console:downloads stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_tcp:openshift-ingress-canary:canary stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_secure:openshift-monitoring:alertmanager-main stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_secure:openshift-monitoring:prometheus-k8s stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_secure:openshift-monitoring:prometheus-k8s-federate stopped (cumulated conns: FE: 0, BE: 0).
[WARNING]  (4636) : Proxy be_secure:openshift-monitoring:thanos-querier stopped (cumulated conns: FE: 0, BE: 0).
[NOTICE]   (4) : New worker (4645) forked
[NOTICE]   (4) : Loading success.
[NOTICE]   (4) : haproxy version is 2.8.18-ae90be6
[NOTICE]   (4) : path to executable is /usr/sbin/haproxy
[WARNING]  (4) : Former worker (4636) exited with code 0 (Exit)

confirmed that haproxy is functioning as intended

/verified by @rhamini3

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.

@rhamini3

Copy link
Copy Markdown
Contributor

confirmed that all DCM tests in e2e-gcp-techpreview job passed

/verified by CI

@openshift-ci-robot

Copy link
Copy Markdown

@rhamini3: This PR has been marked as verified by CI.

Details

In response to this:

confirmed that all DCM tests in e2e-gcp-techpreview job passed

/verified by CI

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.

@rhamini3

Copy link
Copy Markdown
Contributor

/test verify-deps

@melvinjoseph86

Copy link
Copy Markdown
Contributor

/retest-required

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@rhamini3

Copy link
Copy Markdown
Contributor

/retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 85bac76 and 2 for PR HEAD a817ecf in total

@openshift-trt

openshift-trt Bot commented Jun 25, 2026

Copy link
Copy Markdown

Risk analysis has seen new tests most likely introduced by this PR.
Please ensure that new tests meet guidelines for naming and stability.

New Test Risks for sha: a817ecf

Job Name New Test Risk
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types cleanup" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types collection" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types interval construction" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types preparation" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types setup" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types test evaluation" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-gcp-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types writing to storage" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types cleanup" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types collection" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types interval construction" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types preparation" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types setup" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types test evaluation" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-metal-ipi-ovn-ipv6 High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types writing to storage" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-vsphere-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types cleanup" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-vsphere-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types collection" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-vsphere-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types interval construction" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-vsphere-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types preparation" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-vsphere-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types setup" is a new test that was not present in all runs against the current commit.
pull-ci-openshift-origin-main-e2e-vsphere-ovn High - "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types test evaluation" is a new test that was not present in all runs against the current commit.
(...showing 20 of 28 rows)

New tests seen in this PR at sha: a817ecf

  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types cleanup" [Total: 13, Pass: 13, Fail: 0, Flake: 0]
  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types collection" [Total: 13, Pass: 13, Fail: 0, Flake: 0]
  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types interval construction" [Total: 13, Pass: 13, Fail: 0, Flake: 0]
  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types preparation" [Total: 13, Pass: 13, Fail: 0, Flake: 0]
  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types setup" [Total: 13, Pass: 13, Fail: 0, Flake: 0]
  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types test evaluation" [Total: 13, Pass: 13, Fail: 0, Flake: 0]
  • "[Monitor:cluster-instance-types][Jira:"Test Framework"] monitor test cluster-instance-types writing to storage" [Total: 13, Pass: 13, Fail: 0, Flake: 0]

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-gcp-ovn

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 817fa8a and 1 for PR HEAD a817ecf in total

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-gcp-ovn

@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@jcmoraisjr: all tests passed!

Full PR test history. Your PR dashboard.

Details

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 kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot openshift-merge-bot Bot merged commit f36c810 into openshift:main Jun 26, 2026
22 checks passed
@openshift-ci-robot

Copy link
Copy Markdown

@jcmoraisjr: Jira Issue Verification Checks: Jira Issue OCPBUGS-85426
✔️ This pull request was pre-merge verified.
✔️ All associated pull requests have merged.
✔️ All associated, merged pull requests were pre-merge verified.

Jira Issue OCPBUGS-85426 has been moved to the MODIFIED state and will move to the VERIFIED state when the change is available in an accepted nightly payload. 🕓

Details

In response to this:

Addressing a race when patching endpoints resource:

  • Polling EndpointSlice resource to ensure its controller created it after we create the Endpoints resource;
  • Polling EndpointSlice, waiting for it to be updated after we update the Endpoint resource.

Also, dumping all endpoints and endpointSlice in the test namespace in case of a test failure, which helps to correlate the current state and what should be expected in the test scenario.

Example of deployments state log:

deployment state: replicas=4 pods=route-scale-in-5b7b4f6b8c-9ncjg/Running/10.128.1.27 // route-scale-in-5b7b4f6b8c-ck45n/Running/10.128.1.28 // route-scale-in-5b7b4f6b8c-srffr/Running/10.128.1.29 // route-scale-in-5b7b4f6b8c-v9hm2/Running/10.128.1.26

Example of Endpoints and EndpointSlice resources listed if the test fails:

Endpoints:
NAME                  ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in        10.128.1.26,10.128.1.27,10.128.1.28,10.128.1.29                       9376
route-scale-in-khbh5  10.128.1.26                                                           9376

EndpointSlices:
NAME                        SERVICE               ADDRESSES                                        NOT READY ADDRESSES  PORTS
route-scale-in-khbh5-8ncmh  route-scale-in-khbh5  10.128.1.26                                                           9376
route-scale-in-rrhzv        route-scale-in        10.128.1.27,10.128.1.28,10.128.1.29,10.128.1.26                       9376

https://redhat.atlassian.net/browse/OCPBUGS-85426

Summary by CodeRabbit

  • Tests
  • Improved router test observability with richer, tabular diagnostics for Endpoints and EndpointSlices, plus enhanced route/ingress and deployment state output during failures.
  • Added clearer per-iteration progress logging for HAProxy config manager stress scenarios and exposed more deployment pod details during churn.
  • Strengthened detached service setup by polling for deprecated resources and more reliably detecting EndpointSlice presence.
  • Reworked scale-in endpoint handling with conflict-aware retries, address-preserving mirroring verification, and improved address comparison logic.

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.

@jcmoraisjr jcmoraisjr deleted the OCPBUGS-85426-dcm-test-flakiness branch June 26, 2026 20:54
@openshift-merge-robot

Copy link
Copy Markdown
Contributor

Fix included in release 5.0.0-0.nightly-2026-06-27-125119

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants