When multiple OVSDB updates have been received since the last northd run it's possible that the IDL tracks changes for database entities that were added _and also_ removed from the last time the northd processing engine run. In some cases, those may appear as being simultaneously "new" and "deleted".
This might cause an issue when we try to update row, but end up asserting on the row being invalid: assertion row->new_datum != NULL failed in ovsdb_idl_txn_write__() To prevent that skip those entries that appear as both "new" and "deleted" at the same time. Reported-at: https://issues.redhat.com/browse/FDP-2784 Reported-by: Dumitru Ceara <[email protected]> Signed-off-by: Ales Musil <[email protected]> --- northd/northd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/northd/northd.c b/northd/northd.c index a8d435be8..d99aec0b8 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -5239,6 +5239,12 @@ northd_handle_sb_port_binding_changes( const struct sbrec_port_binding *pb; static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); SBREC_PORT_BINDING_TABLE_FOR_EACH_TRACKED (pb, sbrec_port_binding_table) { + /* "New" + "Deleted" is a no-op. */ + if (sbrec_port_binding_is_new(pb) && + sbrec_port_binding_is_deleted(pb)) { + continue; + } + bool is_lrp = !strcmp(datapath_get_nb_type(pb->datapath), ovn_datapath_type_to_string(DP_ROUTER)); -- 2.51.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
