On Fri, May 29, 2026 at 4:16 PM Dumitru Ceara <[email protected]> wrote:
> On 5/28/26 10:16 PM, Mark Michelson via dev wrote:
> > In commit 621f85e92437 ("controller: Fix bfd up too early after
> > unexpected reboot."), OVN would manipulate the flow-restore-wait flag in
> > order to attempt to synchronize with OVS. The previous commit reverted
> > this change due to a potential deadlock between OVS and OVN.
> >
> > If users were using a version of OVN that had commit 621f85e92437, then
> > the revert will help to ensure that OVS and OVN won't deadlock any
> > longer. However, the revert on its own does not resolve the deadlock if
> > the previously running version of ovn-controller set flow-restore-wait
> > to true. It requires manual intervention to get flow-restore-wait set to
> > false or deleted from the Open_vSwitch table.
> >
> > This commit seeks to assist by clearing the flow-restore-wait key in the
> > Open_vSwitch table. This way, on upgrade, the deadlock is resolved
> > without manually setting any OVS database values.
> >
> > Reported-at: https://redhat.atlassian.net/browse/FDP-3862
> > Fixes: 621f85e92437 ("controller: Fix bfd up too early after unexpected
> reboot.")
> > Signed-off-by: Mark Michelson <[email protected]>
> > ---
>
> Hi Mark,
>
> This looks good to me, thanks!
>
> Acked-by: Dumitru Ceara <[email protected]>
>
> > controller/ovn-controller.c | 18 ++++++++++++++++++
> > 1 file changed, 18 insertions(+)
> >
> > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> > index 7e6c9e69a..ad094a454 100644
> > --- a/controller/ovn-controller.c
> > +++ b/controller/ovn-controller.c
> > @@ -7895,6 +7895,24 @@ main(int argc, char *argv[])
> > ovsrec_open_vswitch_update_other_config_setkey(
> > cfg, "vlan-limit", "0");
> > }
> > + /* Clear flow-restore-wait. OVN at one point would set
> > + * flow-restore-wait in order to try to synchronize with
> > + * OVS. However, that resulted in a bug, so that behavior
> > + * was reverted. If upgrading from a version where OVN
> > + * manipulted flow-restore-wait, then flow-restore-wait
> > + * needs to be cleared in order for OVS to function
> > + * properly. This is (hopefully) a temporary measure until
> > + * a more reliable method of synchronizing with OVS is
> > + * devised.
> > + */
> > + if (smap_get_bool(&cfg->external_ids,
> > + "ovn-managed-flow-restore-wait", false) &&
> > + smap_get(&cfg->other_config, "flow-restore-wait")) {
> > + ovsrec_open_vswitch_update_other_config_delkey(
> > + cfg, "flow-restore-wait");
> > + ovsrec_open_vswitch_update_external_ids_delkey(
> > + cfg, "ovn-managed-flow-restore-wait");
> > + }
> > }
> >
> > static bool chassis_idx_stored = false;
>
>
> Regards,
> Dumitru
>
>
Thank you Mark and Dumitru,
applied to main and backported all the way down to 24.03.
Regards,
Ales
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev