mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
Revert "ovsdb-idl: Avoid sending redundant conditional monitoring updates"
This reverts commit5351980b04
. If the ovsdb-server reply to "monitor_cond_since" requests has "found" == false then ovsdb_idl_db_parse_monitor_reply() calls ovsdb_idl_db_clear() which iterates through all tables and unconditionally sets table->cond_changed to false. However, if the client had already set a new condition for some of the tables, this new condition request will never be sent to ovsdb-server until the condition is reset to a different value. This is due to the check in ovsdb_idl_db_set_condition(). One way to replicate the issue is described in the bugzilla reporting the bug, when ovn-controller is configured to use "ovn-monitor-all": https://bugzilla.redhat.com/show_bug.cgi?id=1808125#c6 Commit5351980b04
tried to optimize sending redundant conditional monitoring updates but the chances that this scenario happens with the latest code is quite low since commit403a6a0cb0
("ovsdb-idl: Fast resync from server when connection reset.") changed the behavior of ovsdb_idl_db_parse_monitor_reply() to avoid calling ovsdb_idl_db_clear() in most cases. Reported-by: Dan Williams <dcbw@redhat.com> Reported-at: https://bugzilla.redhat.com/1808125 CC: Andy Zhou <azhou@ovn.org> Fixes:5351980b04
("ovsdb-idl: Avoid sending redundant conditional monitoring updates") Acked-by: Han Zhou <hzhou@ovn.org> Acked-by: Ilya Maximets <i.maximets@ovn.org> Signed-off-by: Dumitru Ceara <dceara@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
committed by
Ilya Maximets
parent
3c6d05a02e
commit
2b7e536fa5
@@ -610,7 +610,6 @@ ovsdb_idl_db_clear(struct ovsdb_idl_db *db)
|
||||
struct ovsdb_idl_table *table = &db->tables[i];
|
||||
struct ovsdb_idl_row *row, *next_row;
|
||||
|
||||
table->cond_changed = false;
|
||||
if (hmap_is_empty(&table->rows)) {
|
||||
continue;
|
||||
}
|
||||
@@ -634,7 +633,6 @@ ovsdb_idl_db_clear(struct ovsdb_idl_db *db)
|
||||
}
|
||||
ovsdb_idl_row_destroy_postprocess(db);
|
||||
|
||||
db->cond_changed = false;
|
||||
db->cond_seqno = 0;
|
||||
ovsdb_idl_db_track_clear(db);
|
||||
|
||||
|
Reference in New Issue
Block a user