In OVN 25.09, we updated the southbound database's Datapath_Binding table to contain a new nb_uuid column that contains the corresponding Logical_Switch or Logical_Router UUID. For safety's sake, we created an accessor function to get the NB UUID from a SB Datapath_Binding. This made it so that on upgrade to OVN 25.09, we could find the NB UUID the new way (through the nb_uuid column) or the old way (through external-ids fields).
In the datapath sync code, we call this accessor function in find_synced_datapath_from_sb() in order to get the NB UUID and hash that UUID. However, once we started iterating through the hashmap of synced datapaths, we reverted to referencing the nb_uuid field directly. This means that on upgrades, this nb_uuid field will not have a UUID. This means we won't find a corresponding synced datapath and will have to recompute. This commit fixes the problem by using the nb_uuid we looked up in the accessor function. This will reduce the risk of unnecessary recomputes. Signed-off-by: Mark Michelson <[email protected]> --- northd/en-datapath-sync.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/northd/en-datapath-sync.c b/northd/en-datapath-sync.c index 9c7dcd402..1c997d242 100644 --- a/northd/en-datapath-sync.c +++ b/northd/en-datapath-sync.c @@ -108,7 +108,7 @@ find_synced_datapath_from_sb(const struct hmap *datapaths, uint32_t hash = uuid_hash(&nb_uuid); HMAP_FOR_EACH_WITH_HASH (sdp, hmap_node, hash, datapaths) { - if (uuid_equals(&sdp->nb_row->uuid, sb_dp->nb_uuid)) { + if (uuid_equals(&sdp->nb_row->uuid, &nb_uuid)) { return sdp; } } -- 2.51.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
