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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev