|
|
dddd63 |
From e8922fefa62184cdd0ff808f4e52de74e8d9bbe5 Mon Sep 17 00:00:00 2001
|
|
|
773311 |
From: Dumitru Ceara <dceara@redhat.com>
|
|
|
773311 |
Date: Wed, 25 Mar 2020 21:15:23 +0100
|
|
|
dddd63 |
Subject: [PATCH 1/4] Revert "ovsdb-idl: Avoid sending redundant conditional
|
|
|
773311 |
monitoring updates"
|
|
|
773311 |
|
|
|
773311 |
This reverts commit 5351980b047f4dd40be7a59a1e4b910df21eca0a.
|
|
|
773311 |
|
|
|
773311 |
If the ovsdb-server reply to "monitor_cond_since" requests has
|
|
|
773311 |
"found" == false then ovsdb_idl_db_parse_monitor_reply() calls
|
|
|
773311 |
ovsdb_idl_db_clear() which iterates through all tables and
|
|
|
773311 |
unconditionally sets table->cond_changed to false.
|
|
|
773311 |
|
|
|
773311 |
However, if the client had already set a new condition for some of the
|
|
|
773311 |
tables, this new condition request will never be sent to ovsdb-server
|
|
|
773311 |
until the condition is reset to a different value. This is due to the
|
|
|
773311 |
check in ovsdb_idl_db_set_condition().
|
|
|
773311 |
|
|
|
773311 |
One way to replicate the issue is described in the bugzilla reporting
|
|
|
773311 |
the bug, when ovn-controller is configured to use "ovn-monitor-all":
|
|
|
773311 |
https://bugzilla.redhat.com/show_bug.cgi?id=1808125#c6
|
|
|
773311 |
|
|
|
773311 |
Commit 5351980b047f tried to optimize sending redundant conditional
|
|
|
773311 |
monitoring updates but the chances that this scenario happens with the
|
|
|
773311 |
latest code is quite low since commit 403a6a0cb003 ("ovsdb-idl: Fast
|
|
|
773311 |
resync from server when connection reset.") changed the behavior of
|
|
|
773311 |
ovsdb_idl_db_parse_monitor_reply() to avoid calling ovsdb_idl_db_clear()
|
|
|
773311 |
in most cases.
|
|
|
773311 |
|
|
|
773311 |
Reported-by: Dan Williams <dcbw@redhat.com>
|
|
|
773311 |
Reported-at: https://bugzilla.redhat.com/1808125
|
|
|
773311 |
CC: Andy Zhou <azhou@ovn.org>
|
|
|
773311 |
Fixes: 5351980b047f ("ovsdb-idl: Avoid sending redundant conditional monitoring updates")
|
|
|
773311 |
Acked-by: Han Zhou <hzhou@ovn.org>
|
|
|
773311 |
Acked-by: Ilya Maximets <i.maximets@ovn.org>
|
|
|
773311 |
Signed-off-by: Dumitru Ceara <dceara@redhat.com>
|
|
|
773311 |
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
|
|
|
773311 |
(cherry picked from upstream OVS commit 2b7e536fa5e20be10e620b959e05557f88862d2c)
|
|
|
773311 |
|
|
|
773311 |
Change-Id: Iaa24bc949d648e8fa29abea1fe8fb5878ba45864
|
|
|
773311 |
---
|
|
|
773311 |
openvswitch-2.13.0/lib/ovsdb-idl.c | 2 --
|
|
|
773311 |
1 file changed, 2 deletions(-)
|
|
|
773311 |
|
|
|
773311 |
diff --git a/openvswitch-2.13.0/lib/ovsdb-idl.c b/openvswitch-2.13.0/lib/ovsdb-idl.c
|
|
|
dddd63 |
index 190143f36..1535ad7b5 100644
|
|
|
773311 |
--- a/openvswitch-2.13.0/lib/ovsdb-idl.c
|
|
|
773311 |
+++ b/openvswitch-2.13.0/lib/ovsdb-idl.c
|
|
|
773311 |
@@ -610,7 +610,6 @@ ovsdb_idl_db_clear(struct ovsdb_idl_db *db)
|
|
|
773311 |
struct ovsdb_idl_table *table = &db->tables[i];
|
|
|
773311 |
struct ovsdb_idl_row *row, *next_row;
|
|
|
773311 |
|
|
|
773311 |
- table->cond_changed = false;
|
|
|
773311 |
if (hmap_is_empty(&table->rows)) {
|
|
|
773311 |
continue;
|
|
|
773311 |
}
|
|
|
773311 |
@@ -634,7 +633,6 @@ ovsdb_idl_db_clear(struct ovsdb_idl_db *db)
|
|
|
773311 |
}
|
|
|
773311 |
ovsdb_idl_row_destroy_postprocess(db);
|
|
|
773311 |
|
|
|
773311 |
- db->cond_changed = false;
|
|
|
773311 |
db->cond_seqno = 0;
|
|
|
773311 |
ovsdb_idl_db_track_clear(db);
|
|
|
773311 |
|
|
|
773311 |
--
|
|
|
dddd63 |
2.26.2
|
|
|
773311 |
|