Hi Ilya, Thanks for your patch! When I merge it into my project, it works to clear the error message. Looking forward for your final version in the community.
Best Regards! Gang Chen > -----Original Message----- > From: Ilya Maximets [mailto:i.maxim...@ovn.org] > Sent: Wednesday, September 8, 2021 7:16 PM > To: Chengang (Russell Lab) <chengan...@huawei.com>; Ilya Maximets > <i.maxim...@ovn.org>; Han Zhou <hz...@ovn.org> > Cc: d...@openvswitch.org; wangyunjian <wangyunj...@huawei.com>; > dingxiaoxiong <dingxiaoxi...@huawei.com>; Dumitru Ceara > <dce...@redhat.com> > Subject: Re: [ovs-dev] [PATCH] ovsdb-idl: Send "set_db_change_aware" before > "monitor_cond_since". > > On 9/8/21 5:01 AM, Chengang (Russell Lab) wrote: > > Hi Ilya, > > > >> On Tuesday, September 7, 2021 7:56 PM, Ilya Maximets > [mailto:i.maxim...@ovn.org] wrote: > >> I had a patch somewhere. I guess, I need to revise it and send. > > > > Can you info me where to get your patch, I would like to test it and reply > > you > the test result. > > I never sent it anywhere, but here it is: > > https://github.com/igsilya/ovs/commit/d37f663994f2cc3c2de6ed39d81b890fe > 0aa4f3f > > The final version of this patch will need changes, because we can't simply > switch all the clients from requests to notifications, because new clients > will > not be able to use db_change_aware feature with old servers. Need to think > how to perform this transition. > > > > > Best Regards! > > Gang Chen > > > >> -----Original Message----- > >> From: Ilya Maximets [mailto:i.maxim...@ovn.org] > >> Sent: Tuesday, September 7, 2021 7:56 PM > >> To: Chengang (Russell Lab) <chengan...@huawei.com>; Han Zhou > >> <hz...@ovn.org>; Ilya Maximets <i.maxim...@ovn.org> > >> Cc: d...@openvswitch.org; wangyunjian <wangyunj...@huawei.com>; > >> dingxiaoxiong <dingxiaoxi...@huawei.com>; Dumitru Ceara > >> <dce...@redhat.com> > >> Subject: Re: [ovs-dev] [PATCH] ovsdb-idl: Send "set_db_change_aware" > >> before "monitor_cond_since". > >> > >> On 9/6/21 3:51 PM, Chengang (Russell Lab) wrote: > >>> Hi Han and Ilya, > >>> > >>> This patch fix the issue: IDL client closes the connection after got > >>> the response to the monitor_cond_since request, without wait for the > >>> reponse to the set_db_change_aware request. Warning message will be > >>> add to ovsdb-server.log > >>> > >>> It makes user confused the issue will occurred even with the command > >> "ovs-vsctl show" or ovs-vsctl other commands. > >>> > >>> Is there any other ideas on this issue? > >> > >> The root cause of a problem is that set_db_change_aware request is > >> hacked into the IDL state machine and IDL doesn't wait for reply and > >> doesn't handle the reply in any way. Moving this hack around the IDl > >> code doesn't seem to be a good solution as it interferes with the > >> rest of the state machine which we definitely don't want to accidentally > break. > >> > >> The correct way to eliminate these benign warnings, as we discussed > >> previously, is to create a new set_db_change_aware notification (not > >> a request), so it will not require sending reply from a server. This > >> will fix the problem and will also make IDL code logically correct. > >> The downside of this is that if new clients will connect to old > >> servers, they will not be able to use the feature if notification is > >> used. So, there should be some transition period until we can enable use > of notifications by default. > >> > >> I had a patch somewhere. I guess, I need to revise it and send. > >> > >>> If this patch can fix it, can we back port this patch to 2.13.0 as > >>> it has the same > >> issue? > >> > >> The issue exists starting from 2.9, however, the correct solution (to > >> use > >> notifications) doesn't seem backportable. > >> > >> Best regards, Ilya Maximets. > >> > >>> > >>> Best Regards! > >>> Gang Chen > >>> > >>>> -----Original Message----- > >>>> From: dev [mailto:ovs-dev-boun...@openvswitch.org] On Behalf Of > >>>> Dumitru Ceara > >>>> Sent: Friday, July 10, 2020 7:33 PM > >>>> To: d...@openvswitch.org > >>>> Cc: Han Zhou <hz...@ovn.org>; Ilya Maximets <i.maxim...@ovn.org> > >>>> Subject: [ovs-dev] [PATCH] ovsdb-idl: Send "set_db_change_aware" > >>>> before "monitor_cond_since". > >>>> > >>>> For short lived IDL clients (e.g., ovn-sbctl) if the client sends > >>>> monitor_cond_since before set_db_change_aware, the client might > >>>> close the DB connection immediately after it received the reply for > >>>> monitor_cond_since and before the server has a chance to reply to > >> set_db_change_aware. > >>>> > >>>> E.g., from the logs of the ovsdb-server: > >>>> 2020-07-10T09:29:52.649Z|04479|jsonrpc|DBG|unix#72: received > >>>> request, method="monitor_cond_since", params=["OVN_Southbound", > >>>> ["monid","OVN_Southbound"],{"SB_Global":[{"columns":["options"]}]}, > >>>> "00000000-0000-0000-0000-000000000000"], id=2 > >>>> 2020-07-10T09:29:52.649Z|04480|jsonrpc|DBG|unix#72: send reply, > >>>> result=[false,"00000000-0000-0000-0000-000000000000", > >>>> {"SB_Global":{"6ad26b48-a742-4fe1-8671-3975e2146ce6":{"initial": > >>>> {"options":["map",[["mac_prefix","be:85:cb"],["svc_monitor_mac", > >>>> "52:58:b5:19:8c:40"]]]}}}}], id=2 > >>>> 2020-07-10T09:29:52.649Z|04482|jsonrpc|DBG|unix#72: received > >>>> request, method="set_db_change_aware", params=[true], id=3 > >>>> > >>>> <<< IDL client closes the connection here because it already got > >>>> the response to the monitor_cond_since request. > >>>> > >>>> 2020-07-10T09:29:59.023Z|04483|jsonrpc|DBG|unix#72: send reply, > >>>> result={}, > >>>> id=3 > >>>> 2020-07-10T09:29:59.023Z|04484|stream_fd|DBG|send: Broken pipe > >>>> 2020-07-10T09:29:59.023Z|04485|jsonrpc|WARN|unix#72: send error: > >>>> Broken pipe > >>>> > >>>> While this is not a critical issue, it can be easily mitigated by > >>>> changing the IDL client to always send "set_db_change_aware" before > >> "monitor_cond_since". > >>>> This way we ensure that a well behaving IDL client doesn't close > >>>> the connection too early, avoiding the error logs in ovsdb-server. > >>>> > >>>> This patch moves the code to send monitor_cond_since(data) from > >>>> function > >>>> ovsdb_idl_check_server_db() to ovsdb_idl_process_response() as we > >>>> can transition to IDL_S_DATA_MONITOR_COND_SINCE_REQUESTED only > upon > >>>> receiving a reply for monitor_cond(server). > >>>> > >>>> CC: Ben Pfaff <b...@ovn.org> > >>>> CC: Han Zhou <hz...@ovn.org> > >>>> CC: Ilya Maximets <i.maxim...@ovn.org> > >>>> Reported-by: Girish Moodalbail <gmoodalb...@gmail.com> > >>>> Reported-at: > >>>> https://mail.openvswitch.org/pipermail/ovs-discuss/2020-July/050343 > >>>> .h > >>>> tml > >>>> Fixes: 1b1d2e6daa56 ("ovsdb: Introduce experimental support for > >>>> clustered > >>>> databases.") > >>>> Signed-off-by: Dumitru Ceara <dce...@redhat.com> > >>>> --- > >>>> lib/ovsdb-idl.c | 7 ++++--- > >>>> 1 file changed, 4 insertions(+), 3 deletions(-) > >>>> > >>>> diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c index > >>>> ef3b97b..c6427f5 > >>>> 100644 > >>>> --- a/lib/ovsdb-idl.c > >>>> +++ b/lib/ovsdb-idl.c > >>>> @@ -770,6 +770,10 @@ ovsdb_idl_process_response(struct ovsdb_idl > >>>> *idl, struct jsonrpc_msg *msg) > >>>> > >>>> OVSDB_IDL_MM_MONITOR_COND); > >>>> if (ovsdb_idl_check_server_db(idl)) { > >>>> ovsdb_idl_send_db_change_aware(idl); > >>>> + ovsdb_idl_send_monitor_request( > >>>> + idl, &idl->data, > >>>> OVSDB_IDL_MM_MONITOR_COND_SINCE); > >>>> + ovsdb_idl_transition( > >>>> + idl, > >>>> IDL_S_DATA_MONITOR_COND_SINCE_REQUESTED); > >>>> } > >>>> } else { > >>>> ovsdb_idl_send_schema_request(idl, &idl->data); @@ > >>>> -2057,9 > >>>> +2061,6 @@ ovsdb_idl_check_server_db(struct ovsdb_idl *idl) > >>>> if (idl->state == IDL_S_SERVER_MONITOR_COND_REQUESTED) { > >>>> json_destroy(idl->data.schema); > >>>> idl->data.schema = json_from_string(database->schema); > >>>> - ovsdb_idl_send_monitor_request(idl, &idl->data, > >>>> - > >>>> OVSDB_IDL_MM_MONITOR_COND_SINCE); > >>>> - ovsdb_idl_transition(idl, > >>>> IDL_S_DATA_MONITOR_COND_SINCE_REQUESTED); > >>>> } > >>>> return true; > >>>> } > >>>> -- > >>>> 1.8.3.1 > >>>> > >>>> _______________________________________________ > >>>> dev mailing list > >>>> d...@openvswitch.org > >>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev