Merge "BigSwitch: Sync workaround for port del deadlock"

This commit is contained in:
Jenkins 2014-03-20 21:52:10 +00:00 committed by Gerrit Code Review
commit 5021d82207

View File

@ -59,6 +59,7 @@ from neutron.common import constants as const
from neutron.common import exceptions from neutron.common import exceptions
from neutron.common import rpc as q_rpc from neutron.common import rpc as q_rpc
from neutron.common import topics from neutron.common import topics
from neutron.common import utils
from neutron import context as qcontext from neutron import context as qcontext
from neutron.db import agents_db from neutron.db import agents_db
from neutron.db import agentschedulers_db from neutron.db import agentschedulers_db
@ -589,6 +590,8 @@ class NeutronRestProxyV2(NeutronRestProxyV2Base,
self._send_update_network(new_net, context) self._send_update_network(new_net, context)
return new_net return new_net
# NOTE(kevinbenton): workaround for eventlet/mysql deadlock
@utils.synchronized('bsn-port-barrier')
def delete_network(self, context, net_id): def delete_network(self, context, net_id):
"""Delete a network. """Delete a network.
:param context: neutron api request context :param context: neutron api request context
@ -777,6 +780,8 @@ class NeutronRestProxyV2(NeutronRestProxyV2Base,
# return new_port # return new_port
return new_port return new_port
# NOTE(kevinbenton): workaround for eventlet/mysql deadlock
@utils.synchronized('bsn-port-barrier')
def delete_port(self, context, port_id, l3_port_check=True): def delete_port(self, context, port_id, l3_port_check=True):
"""Delete a port. """Delete a port.
:param context: neutron api request context :param context: neutron api request context
@ -842,6 +847,8 @@ class NeutronRestProxyV2(NeutronRestProxyV2Base,
self._send_update_network(orig_net, context) self._send_update_network(orig_net, context)
return new_subnet return new_subnet
# NOTE(kevinbenton): workaround for eventlet/mysql deadlock
@utils.synchronized('bsn-port-barrier')
def delete_subnet(self, context, id): def delete_subnet(self, context, id):
LOG.debug(_("NeutronRestProxyV2: delete_subnet() called")) LOG.debug(_("NeutronRestProxyV2: delete_subnet() called"))
orig_subnet = super(NeutronRestProxyV2, self).get_subnet(context, id) orig_subnet = super(NeutronRestProxyV2, self).get_subnet(context, id)
@ -921,6 +928,9 @@ class NeutronRestProxyV2(NeutronRestProxyV2Base,
# return updated router # return updated router
return new_router return new_router
# NOTE(kevinbenton): workaround for eventlet/mysql deadlock.
# delete_router ends up calling _delete_port instead of delete_port.
@utils.synchronized('bsn-port-barrier')
def delete_router(self, context, router_id): def delete_router(self, context, router_id):
LOG.debug(_("NeutronRestProxyV2: delete_router() called")) LOG.debug(_("NeutronRestProxyV2: delete_router() called"))