
If there are multiple OVS agents concurrently executing 'tunnel_sync' RPC call a race condition can occur leading to insertion of two different TunnelEndpoint entries having the same 'id' value. Unfortunately, we can not rely on: - @lockutils.synchronized(), because a Neutron installation can use more than one API node - with_lockmode('update'), because it works differently in PostgreSQL comparing to MySQL and doesn't guarantee that no new rows have been added to the table since the select query was issued. Please take a look at http://www.postgresql.org/files/developer/concurrency.pdf for more details. The proposed fix: - ensures there is a unique constraint set for 'id' column - wraps creation of a new TunnelEndpoint entry into a repeatedly executed transactional block (so even if a concurrent DB transaction has been flushed or commited earlier than this one we can handle an integrity error and try again, in spite of the specified transactions isolation level value) Fixes bug 1167916 Change-Id: I62dc729d595f090436199d5e1b6b98a884ead7a5
# -- Welcome!
You have come across a cloud computing network fabric controller. It has identified itself as "Neutron." It aims to tame your (cloud) networking!
# -- External Resources:
The homepage for Neutron is: http://launchpad.net/neutron . Use this site for asking for help, and filing bugs. Code is available on github at <http://github.com/openstack/neutron>.
The latest and most in-depth documentation on how to use Neutron is available at: <http://docs.openstack.org>. This includes:
Neutron Administrator Guide http://docs.openstack.org/trunk/openstack-network/admin/content/
Neutron API Reference: http://docs.openstack.org/api/openstack-network/2.0/content/
The start of some developer documentation is available at: http://wiki.openstack.org/NeutronDevelopment
For help using or hacking on Neutron, you can send mail to <mailto:openstack-dev@lists.openstack.org>.