On Mon, Dec 1, 2025 at 5:37 PM Mark Michelson <[email protected]> wrote:

> On Mon, Dec 1, 2025 at 10:50 AM Ales Musil via dev
> <[email protected]> wrote:
> >
> > The hmap could be NULL under one circumstance, node depending
> > on the northd data would run before the northd node right
> > after the start. Make sure we won't crash in that case.
>
> Can you explain this in a bit more detail? How does a node that
> depends on northd data run before the northd node?
>

It also depends on SB nodes. So it will get triggered from the SB update
first.


>
> >
> > Fixes: 6919992d8781 ("Datapath_Binding: Separate type column and sync
> NB.UUID to SB.")
> > Reported-at: https://issues.redhat.com/browse/FDP-2757
> > Signed-off-by: Ales Musil <[email protected]>
> > ---
> >  northd/northd.c     |  4 ++++
> >  tests/ovn-northd.at | 29 +++++++++++++++++++++++++++++
> >  2 files changed, 33 insertions(+)
> >
> > diff --git a/northd/northd.c b/northd/northd.c
> > index ec219a0c7..3bd1f6849 100644
> > --- a/northd/northd.c
> > +++ b/northd/northd.c
> > @@ -647,6 +647,10 @@ ovn_datapath_from_sbrec(const struct hmap
> *ls_datapaths,
> >          return NULL;
> >      }
> >
> > +    if (!dps) {
> > +        return NULL;
> > +    }
> > +
> >      struct ovn_datapath *od = ovn_datapath_find_(dps, &key);
> >      if (od && (od->sdp->sb_dp == sb)) {
> >          return od;
> > diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> > index 380c9ff80..0bc2808ac 100644
> > --- a/tests/ovn-northd.at
> > +++ b/tests/ovn-northd.at
> > @@ -18885,3 +18885,32 @@ AT_CHECK([ovn-sbctl lflow-list ls1 | grep
> ls_in_apply_port_sec | ovn_strip_lflow
> >
> >  AT_CLEANUP
> >  ])
> > +
> > +OVN_FOR_EACH_NORTHD_NO_HV([
> > +AT_SETUP([IGMP northd crash])
> > +ovn_start
> > +
> > +check ovn-nbctl lr-add lr
> > +check ovn-sbctl chassis-add hv1 geneve 127.0.0.1
> > +
> > +# Kill northd and start it paused this time.
> > +as northd
> > +OVS_APP_EXIT_AND_WAIT([ovn-northd])
> > +ovn_start_northd --paused
> > +
> > +# Create IGMP Group for lr datapath.
> > +check_uuid ovn-sbctl create IGMP_Group address=mrouters \
> > +    datapath=$(fetch_column Datapath_Binding _uuid
> external_ids:name=lr) \
> > +    chassis=$(fetch_column Chassis _uuid name=hv1) \
> > +    chassis_name=hv1
> > +wait_row_count Igmp_Group 1 address=mrouters
> > +
> > +# Unpause northd and check if we didn't crash.
> > +as northd ovn-appctl -t ovn-northd resume
> > +check ovn-nbctl --wait=sb sync
> > +
> > +wait_row_count Igmp_Group 0 address=mrouters
> > +
> > +OVN_CLEANUP_NORTHD
> > +AT_CLEANUP
> > +])
> > --
> > 2.51.1
> >
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >
>
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to