On Fri, Nov 20, 2015 at 6:16 AM, Numan Siddique <[email protected]> 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.

-- 
Russell Bryant
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to