[ovs-dev] [PATCH v2 03/21] ovn-controller: Avoid blocking to commit OVSDB transactions.

Ben Pfaff blp at nicira.com
Tue Jul 28 20:42:12 UTC 2015


On Tue, Jul 28, 2015 at 11:56:05AM -0700, Alex Wang wrote:
> Curious here, if we could run into the following race (in main function):
> 
> 1. first run of while loop: we have some change from ovnsb~
> 2. ovn-controller execute all *_run() functions to update~
> 3. the txn commit to ovsdb is INCOMPLETE~ and at the same time, there is
> another
>     change from ovnsb~
> 4. second run of while loop: the next call to
> idl_loop_run()->ovsdb_idl_run() will update the
>     local idl.  however, since the 'idl_loop' has 'committing_txn', the
> *_run() will be no-op.
> 5. assume this time, the commit to ovsdb finishes.  since the local idl has
> already been
>     updated, ovn-controller will call poll_block() with no immediate
> wakeup...
> 6. so, the second change to ovnsb will only be checked the next time there
> is a new update
>     from ovnsb.

You are right.  Here is a proposed fix:
        http://openvswitch.org/pipermail/dev/2015-July/058192.html



More information about the dev mailing list