[ovs-dev] [PATCH] ovs-xapi-sync: Rerun processing when a db update arrives during a commit.
Ben Pfaff
blp at nicira.com
Thu Mar 8 19:48:41 UTC 2012
Thanks, I pushed it to master and backported all the way to 1.3.
On Thu, Mar 08, 2012 at 11:40:38AM -0800, Justin Pettit wrote:
> It looks good to me.
>
> --Justin
>
>
> On Mar 8, 2012, at 11:12 AM, Ben Pfaff wrote:
>
> > The logic in ovs-xapi-sync didn't handle the case where ovsdb-server sends
> > a database update before it replies to a transaction that ovs-xapi-sync
> > sent, like this:
> >
> > ovs-xapi-sync ovsdb-server
> > ------------- ------------
> >
> > .
> > .
> > .
> > transaction request --->
> > <--- database contents update
> > <--- transaction reply
> > .
> > .
> > .
> >
> > The update was not lost but ovs-xapi-sync would not process it until the
> > database changed again.
> >
> > Bug #10082.
> > Reported-by: Krishna Miriyala <krishna at nicira.com>
> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> > ---
> > It's too easy to get this wrong, so I'm working on some patches
> > that make it harder. In the meantime, I believe that this fixes
> > the observed problem.
> >
> > Thanks,
> >
> > Ben.
> >
> > .../usr_share_openvswitch_scripts_ovs-xapi-sync | 5 ++++-
> > 1 files changed, 4 insertions(+), 1 deletions(-)
> >
> > diff --git a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> > index 7132726..0ffccc2 100755
> > --- a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> > +++ b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> > @@ -272,8 +272,10 @@ def main():
> > bridges = {} # Map from bridge name to xs_network_uuids
> > iface_ids = {} # Map from xs-vif-uuid to iface-id
> > vm_ids = {} # Map from xs-vm-uuid to vm-id
> > + seqno = idl.change_seqno # Sequence number when we last processed the db
> > while True:
> > - if not force_run and not idl.run():
> > + idl.run()
> > + if not force_run and seqno == idl.change_seqno:
> > poller = ovs.poller.Poller()
> > idl.wait(poller)
> > poller.block()
> > @@ -285,6 +287,7 @@ def main():
> > iface_ids = {}
> > vm_ids = {}
> > force_run = False
> > + seqno = idl.change_seqno
> >
> > txn = ovs.db.idl.Transaction(idl)
> >
> > --
> > 1.7.2.5
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list