[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