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

Reply via email to