Skip to content

Comments

[release-4.18] OCPBUGS-62671: Fix EgressIP stale GARP post reboot + pod restart#2775

Merged
openshift-merge-bot[bot] merged 4 commits intoopenshift:release-4.18from
martinkennelly:418-garp-final
Oct 17, 2025
Merged

[release-4.18] OCPBUGS-62671: Fix EgressIP stale GARP post reboot + pod restart#2775
openshift-merge-bot[bot] merged 4 commits intoopenshift:release-4.18from
martinkennelly:418-garp-final

Conversation

@martinkennelly
Copy link
Contributor

@martinkennelly martinkennelly commented Oct 2, 2025

No conflicts.

Block GARPs from default network when ovnk controller hasnt yet sync'd.

/hold

@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Oct 2, 2025
@openshift-ci-robot
Copy link
Contributor

@martinkennelly: This pull request references Jira Issue OCPBUGS-62671, which is invalid:

  • expected Jira Issue OCPBUGS-62671 to depend on a bug targeting a version in 4.19.0, 4.19.z and in one of the following states: VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA), but no dependents were found

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:

No conflicts.

But depends on #2768
and needs rebassing when that merges.
Also depends on #2774

/hold

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
Copy link
Contributor

openshift-ci bot commented Oct 2, 2025

@martinkennelly: This PR was included in a payload test run from openshift/machine-config-operator#5325
trigger 10 job(s) of type blocking for the nightly release of OCP 4.18

  • periodic-ci-openshift-release-master-nightly-4.18-e2e-aws-ovn-serial
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-ovn-techpreview
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-ovn-techpreview-serial
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-upgrade-from-stable-4.17-e2e-gcp-ovn-rt-upgrade
  • periodic-ci-openshift-hypershift-release-4.18-periodics-e2e-aws-ovn-conformance
  • periodic-ci-openshift-release-master-nightly-4.18-e2e-metal-ipi-ovn-bm
  • periodic-ci-openshift-release-master-nightly-4.18-e2e-metal-ipi-ovn-ipv6

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/0d396b30-9f8c-11f0-90d0-4678c9c2c425-0

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 2, 2025
Currently, we are force exiting with the trap before the background
processes can end, container is removed and the orphaned processes
end early causing our config to go into an unknown state because we
dont end in an orderly manner.

Wait until the pid file for ovnkube controller with node is removed
which shows the process has completed.

Signed-off-by: Martin Kennelly <mkennell@redhat.com>
(cherry picked from commit 8b29419)
(cherry picked from commit d65ec5c)
(cherry picked from commit d3ae338)
Prevent ovn-controller from sending stale GARP by adding
drop flows on external bridge patch ports
until ovnkube-controller synchronizes the southbound database - henceforth
known as "drop flows".

This addresses race conditions where ovn-controller processes outdated
SB DB state before ovnkube-controller updates it, particularly affecting
EIP SNAT configurations attached to logical router ports.
Fixes: https://issues.redhat.com/browse/FDP-1537

ovnkube-controller controls the lifecycle of the drop flows.
ovs / ovn-controller running is required to configure external bridge.
Downstream, the external bridge maybe precreated and ovn-controller
will use this.

This fix considers three primary scenarios: node, container and pod restart.

On Node restart means the ovs flows installed priotior to reboot on the node are
cleared but the external bridge exists. Add the flows before ovnkube controller
with node starts. The reason to add it here is that our gateway code depends
on ovn-controller started and running...
There is now a race here between ovn-controller starting
(and garping) before we set this flow but I think the risk is low however
it needs serious testing. The reason I did not naturally at the drop
flows before ovn-controller started is because I have no way to detect
if its a node reboot or pod reboot and i dont want to inject drop flows
for simple ovn-controller container restart which could disrupt traffic.
ovnkube-controller starts, we create a new gateway and apply flows the same
flows in-order to ensure we always drop GARP when ovnkube controller
hasn't sync.
Remove the flows when ovnkube-controller has syncd. There is also a race here
between ovnkube-controller removing the flows and ovn-controller GARPing with
stale SB DB info. There is no easy way to detect what SB DB data ovn-controller
has consumed.

On Pod restart, we add the drop flows before exit. ovnkube-controller-with-node
will also add it before it starts the go code.

Container restart:
- ovnkube-controller: adds flows upon start and exit
- ovn-controller: no changes

While the drop flows are set, OVN may not be able to resolve IPs
it doesn't know about in its Logical Router pipelines generation. Following
removal of the drop flows, OVN may resolve the IPs using GARP requests.

OVN-Controller always sends out GARPs with op code 1
on startup.

Signed-off-by: Martin Kennelly <mkennell@redhat.com>
(cherry picked from commit 82fc3bf)
(cherry picked from commit 50a94e1)
(cherry picked from commit 37dd4e2)
PR 5373 to drop the GARP flows didnt consider that we
set the default network controller and later we set
the gateway obj. In-between this period, ovnkube node
may receive a stop signal and we do not guard against
accessing the gateway if its not yet set.

OVNKube controller may have sync'd before the gateway
obj is set.

There is nothing to reconcile if the gateway is not set.

Signed-off-by: Martin Kennelly <mkennell@redhat.com>
(cherry picked from commit e60220a)
(cherry picked from commit a7869b2)
(cherry picked from commit 2ac68e4)
Ensure ovn-controller has processed the SB DB updates before
removing the GARP drop flows by utilizing the hv_cfg field
in NB_Global [1]

OVNKube controller increments the nb_cfg value post sync, which is copied
to SB DB by northd. OVN-Controllers copy this nb_cfg value from SB DB
and write it to their chassis_private tables nb_cfg field after
they have processed the SB DB changes. Northd will then look
at all the chassis_private tables nb_cfg value and set the
NB DBs Nb_global hv_cfg value to the min integer found.

Since IC currently only supports one node per zone, we
can be sure ovn-controller is running locally and therefore
its ok to block removing the drop GARP flows.

[1] https://man7.org/linux/man-pages/man5/ovn-nb.5.html

Signed-off-by: Martin Kennelly <mkennell@redhat.com>
(cherry picked from commit 3b5da01)
(cherry picked from commit a4776fb)
(cherry picked from commit f7c67b7)
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 8, 2025

@martinkennelly: This PR was included in a payload test run from openshift/machine-config-operator#5325
trigger 10 job(s) of type blocking for the nightly release of OCP 4.18

  • periodic-ci-openshift-release-master-nightly-4.18-e2e-aws-ovn-serial
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-upgrade-ovn-single-node
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-ovn-techpreview
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-ovn-techpreview-serial
  • periodic-ci-openshift-release-master-ci-4.18-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-upgrade-from-stable-4.17-e2e-gcp-ovn-rt-upgrade
  • periodic-ci-openshift-hypershift-release-4.18-periodics-e2e-aws-ovn-conformance
  • periodic-ci-openshift-release-master-nightly-4.18-e2e-metal-ipi-ovn-bm
  • periodic-ci-openshift-release-master-nightly-4.18-e2e-metal-ipi-ovn-ipv6

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/1434b9a0-a43f-11f0-8a2f-32c75352f1ed-0

@martinkennelly
Copy link
Contributor Author

/retest

Payload build issue:

error: image "quay-proxy.ci.openshift.org/openshift/ci@sha256:e9a399997cf0ac7afdef11bf7bb7319a945519d5d81b16236a04633e4e03d417" not found: manifest unknown: manifest unknown

@martinkennelly
Copy link
Contributor Author

/retest

Mostly payload creation failure..hmm

error: image "quay-proxy.ci.openshift.org/openshift/ci@sha256:135e9be49d0c941e26496a16efed3f556b7cb225a3af757482b83524a3922f00" not found: manifest unknown: manifest unknown
 echo 'Payload creation failure (attempt 5/5).'

@jluhrsen
Copy link
Contributor

jluhrsen commented Oct 8, 2025

/retest

@martinkennelly
Copy link
Contributor Author

/retest

Payload gen issue

@martinkennelly
Copy link
Contributor Author

martinkennelly commented Oct 9, 2025

Payload ci nightly is good!

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 9, 2025

@martinkennelly: This PR was included in a payload test run from openshift/machine-config-operator#5325
trigger 4 job(s) of type blocking for the ci release of OCP 4.18

  • periodic-ci-openshift-release-master-ci-4.18-upgrade-from-stable-4.17-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-upgrade-from-stable-4.17-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-hypershift-release-4.18-periodics-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/1a5ad180-a533-11f0-8a33-4aa5b4bdb3ee-0

@jechen0648
Copy link
Contributor

/verified by 'pre-merge testing'

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Oct 9, 2025
@openshift-ci-robot
Copy link
Contributor

@jechen0648: This PR has been marked as verified by 'pre-merge testing'.

Details

In response to this:

/verified by 'pre-merge testing'

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
Copy link
Contributor

openshift-ci bot commented Oct 9, 2025

@jluhrsen: This PR was included in a payload test run from openshift/machine-config-operator#5325
trigger 4 job(s) of type blocking for the ci release of OCP 4.18

  • periodic-ci-openshift-release-master-ci-4.18-upgrade-from-stable-4.17-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-upgrade-from-stable-4.17-e2e-azure-ovn-upgrade
  • periodic-ci-openshift-release-master-ci-4.18-e2e-gcp-ovn-upgrade
  • periodic-ci-openshift-hypershift-release-4.18-periodics-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/da39e450-a54c-11f0-8e18-f1f75f4770a3-0

@openshift-ci-robot
Copy link
Contributor

@martinkennelly: This pull request references Jira Issue OCPBUGS-62671, which is invalid:

  • expected dependent Jira Issue OCPBUGS-62670 to be in one of the following states: VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA), but it is POST instead

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.

Details

In response to this:

No conflicts.

Block GARPs from default network when ovnk controller hasnt yet sync'd.

/hold

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.

@martinkennelly
Copy link
Contributor Author

/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 Oct 14, 2025
@martinkennelly
Copy link
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Oct 16, 2025
@openshift-ci-robot
Copy link
Contributor

@martinkennelly: This pull request references Jira Issue OCPBUGS-62671, which is valid.

7 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.18.z) matches configured target version for branch (4.18.z)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
  • release note text is set and does not match the template
  • dependent bug Jira Issue OCPBUGS-62670 is in the state Verified, which is one of the valid states (VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA))
  • dependent Jira Issue OCPBUGS-62670 targets the "4.19.z" version, which is one of the valid target versions: 4.19.0, 4.19.z
  • bug has dependents

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

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.

@martinkennelly
Copy link
Contributor Author

martinkennelly commented Oct 16, 2025

Requesting override for lint job: https://issues.redhat.com/browse/CORENET-6207
/override ci/prow/lint

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 16, 2025

@martinkennelly: Overrode contexts on behalf of martinkennelly: ci/prow/lint

Details

In response to this:

/override ci/prow/lint

https://issues.redhat.com/browse/CORENET-6207

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.

@martinkennelly
Copy link
Contributor Author

Payload ci & nightly blocking are clean.

@kyrtapz
Copy link
Contributor

kyrtapz commented Oct 16, 2025

/lgtm
/label backport-risk-assessed

@openshift-ci openshift-ci bot added the backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. label Oct 16, 2025
@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Oct 16, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 16, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kyrtapz, martinkennelly

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:
  • OWNERS [kyrtapz,martinkennelly]

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

@martinkennelly
Copy link
Contributor Author

For job 4.18-upgrade-from-stable-4.17-e2e-gcp-ovn-rt-upgrade:

Deprovisioning is failing:

Run multi-stage test e2e-gcp-ovn-rt-upgrade - e2e-gcp-ovn-rt-upgrade-ipi-deprovision-deprovision container test expand_less	8m59s
{  00222f700)
	/go/src/github.com/openshift/installer/vendor/k8s.io/apimachinery/pkg/util/wait/poll.go:260 +0x89
k8s.io/apimachinery/pkg/util/wait.PollImmediateInfiniteWithContext({0x241086b0?, 0x292e97e0?}, 0xc001420d70?, 0xc0014cbf20?)
	/go/src/github.com/openshift/installer/vendor/k8s.io/apimachinery/pkg/util/wait/poll.go:229 +0x53
k8s.io/apimachinery/pkg/util/wait.PollImmediateInfinite(0x241086b0?, 0x292e97e0?)
	/go/src/github.com/openshift/installer/vendor/k8s.io/apimachinery/pkg/util/wait/poll.go:214 +0x45
github.com/openshift/installer/pkg/destroy/gcp.(*ClusterUninstaller).Run(0xc0013fa1e0)
	/go/src/github.com/openshift/installer/pkg/destroy/gcp/gcp.go:159 +0x73f
main.runDestroyCmd({0x7ffd731301c7, 0xe}, 0x1)
	/go/src/github.com/openshift/installer/cmd/openshift-install/destroy.go:70 +0xca
main.newDestroyCmd.newDestroyClusterCmd.func3(0xc0013eec00?, {0xc0013e4820?, 0x4?, 0x9b44ae4?})
	/go/src/github.com/openshift/installer/cmd/openshift-install/destroy.go:55 +0x74
github.com/spf13/cobra.(*Command).execute(0xc00124f808, {0xc0013e47e0, 0x2, 0x2})
	/go/src/github.com/openshift/installer/vendor/github.com/spf13/cobra/command.go:989 +0xab1
github.com/spf13/cobra.(*Command).ExecuteC(0xc001481208)
	/go/src/github.com/openshift/installer/vendor/github.com/spf13/cobra/command.go:1117 +0x3ff
github.com/spf13/cobra.(*Command).Execute(...)
	/go/src/github.com/openshift/installer/vendor/github.com/spf13/cobra/command.go:1041
main.installerMain()
	/go/src/github.com/openshift/installer/cmd/openshift-install/main.go:67 +0x3c6
main.main()
	/go/src/github.com/openshift/installer/cmd/openshift-install/main.go:39 +0x168
Copying the Installer logs and metadata to the artifacts directory...
{"component":"entrypoint","error":"wrapped process failed: exit status 2","file":"sigs.k8s.io/prow/pkg/entrypoint/run.go:84","func":"sigs.k8s.io/prow/pkg/entrypoint.Options.internalRun","level":"error","msg":"Error executing test process","severity":"error","time":"2025-10-16T13:35:20Z"}
error: failed to execute wrapped command: exit status 2

Unrelated to this PR but investigating.

@martinkennelly
Copy link
Contributor Author

/test 4.18-upgrade-from-stable-4.17-e2e-gcp-ovn-rt-upgrade

Unrelated deprovisioning issue: raising it with test platform team: https://redhat-internal.slack.com/archives/CBN38N3MW/p1760623426190399

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Oct 16, 2025

@martinkennelly: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-azure-ovn-techpreview e694732 link false /test e2e-azure-ovn-techpreview
ci/prow/e2e-aws-ovn-hypershift-kubevirt e694732 link false /test e2e-aws-ovn-hypershift-kubevirt
ci/prow/e2e-aws-ovn-techpreview e694732 link false /test e2e-aws-ovn-techpreview
ci/prow/e2e-azure-ovn e694732 link false /test e2e-azure-ovn
ci/prow/e2e-metal-ipi-ovn-dualstack-bgp-local-gw-techpreview e694732 link false /test e2e-metal-ipi-ovn-dualstack-bgp-local-gw-techpreview
ci/prow/e2e-metal-ipi-ovn-dualstack-bgp-techpreview e694732 link false /test e2e-metal-ipi-ovn-dualstack-bgp-techpreview
ci/prow/security 2396130 link false /test security

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-ci-robot
Copy link
Contributor

/retest-required

Remaining retests: 0 against base HEAD 03fb013 and 2 for PR HEAD 2396130 in total

@openshift-merge-bot openshift-merge-bot bot merged commit 0466cfd into openshift:release-4.18 Oct 17, 2025
25 of 26 checks passed
@openshift-ci-robot
Copy link
Contributor

@martinkennelly: Jira Issue Verification Checks: Jira Issue OCPBUGS-62671
✔️ 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-62671 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:

No conflicts.

Block GARPs from default network when ovnk controller hasnt yet sync'd.

/hold

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.

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. backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. 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. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.