[ovs-dev] ovsdb-idl conditional monitoring change bug

Ben Pfaff blp at ovn.org
Wed Nov 18 23:48:58 UTC 2020


There appears to be some bug in the ovsdb-idl logic for sending updates
to the condition for conditional monitoring, exposed by test 2128
"simple idl, monitor_cond_since, cluster disconnect - C - tcp".  When I
apply the following patch, which should only affect performance (it just
reduces the number of iterations per main loop from 50 to 1), the test
fails.  

diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
index fdb9d85f5ccc..8f4327f1c13d 100644
--- a/lib/ovsdb-idl.c
+++ b/lib/ovsdb-idl.c
@@ -920,7 +920,7 @@ ovsdb_idl_run(struct ovsdb_idl *idl)
     ovsdb_idl_send_cond_change(idl);
 
     jsonrpc_session_run(idl->session);
-    for (i = 0; jsonrpc_session_is_connected(idl->session) && i < 50; i++) {
+    for (i = 0; jsonrpc_session_is_connected(idl->session) && i < 1; i++) {
         struct jsonrpc_msg *msg;
         unsigned int seqno;
 
When I examine the difference in the testsuite.log, I see that in the
failing case, the "monitor_cond_change" that should be sent never does
get sent.  This is what's missing:

test-ovsdb|jsonrpc|tcp:127.0.0.1:41441: send request, method="monitor_cond_change", params=[["monid","idltest"],["monid","idltest"],{"simple":[{"where":[["i","==",1]]}]}], id=11

I haven't figured out the root of the problem.  I have spent a bit of
time on this and I have to move on to other things.


More information about the dev mailing list