[ovs-discuss] [ovn] : ovn-northd not updating the south db when some new flows added in the code and restarted.

Numan Siddique nusiddiq at redhat.com
Fri Nov 20 14:33:09 UTC 2015


On 11/20/2015 07:49 PM, Russell Bryant wrote:
> On Fri, Nov 20, 2015 at 6:16 AM, Numan Siddique <nusiddiq at redhat.com> wrote:
>
>> Hi,
>>
>> I am seeing an issue with ovn-northd where in it is not updating the south
>> db when I applied the "ovn: support ARP response for known IPs"
>> patch from Han Zhou add restarted the ovn-northd.
>>
>> I didn't see the flows related to ARP getting reflected in the south db.
>> It only got reflected when I updated the north db from neutron like
>> creating a new port or restarting
>> the ovn-northd again.
>>
>> By putting some prints, I could see that
>> ovsdb_idl_txn_commit(ctx.ovnsb_txn) is returning TXN_ERROR after which it
>> is blocked in poll_block().
>> until some update happens in north db.
>>
>> The issue is not seen all the time. But only when ovsdb_idl_txn_commit
>> returns TXN_ERROR.
>>
>> The below code is fixing the issue. Wanted to get the comments from the
>> reviewers if it is the right fix or
>> the problem lies some where else. Also not sure if there are any side
>> effects because of the below fix.
>>
>> ---
>>  ovn/northd/ovn-northd.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
>> index 8fe0c2c..1c3821f 100644
>> --- a/ovn/northd/ovn-northd.c
>> +++ b/ovn/northd/ovn-northd.c
>> @@ -1990,7 +1990,8 @@ main(int argc, char *argv[])
>>          }
>>
>>          if (ovnnb_seqno == ovsdb_idl_get_seqno(ovnnb_idl) &&
>> -                ovn_seqno == ovsdb_idl_get_seqno(ovnsb_idl)) {
>> +                ovn_seqno == ovsdb_idl_get_seqno(ovnsb_idl)
>> +                && !ovnnb_changes_pending) {
>>              ovsdb_idl_wait(ovnnb_idl);
>>              ovsdb_idl_wait(ovnsb_idl);
>>              if (ctx.ovnnb_txn) {
>>
> I'm not sure what the transaction error is, but this patch seems correct.
>
> There's actually some common code we could use that would replace all of
> this.  First we had ovn-northd, then ovn-controller, and then
> ovn-controller-vtep.  ovn-controller-vtep was modeled largely on
> ovn-controller and some common code was split out.  In particular, see the
> ovsdb_idl_loop_* functions.  It seems like we should refactor the main loop
> ovn-northd to use that.
>
Thanks Russel. I will look into it and refactor it accordingly.

Numan




More information about the discuss mailing list