From: Aaron Rosen Date: Wed, 5 Mar 2014 03:19:40 +0000 (-0800) Subject: Fix race condition in update_floatingip_statuses X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=16cc14d11dc80529c98b433a31b7a7c20bf06d91;p=openstack-build%2Fneutron-build.git Fix race condition in update_floatingip_statuses If a floatingip is deleted before update_floatingip_statuses() is processed FloatingIPNotFound is raised. Change-Id: Idf03fda75ccd147673169c24e79921ca6d8fe754 Closes-bug: #1288036 --- diff --git a/neutron/db/l3_rpc_base.py b/neutron/db/l3_rpc_base.py index 26b06ed23..d86d95698 100644 --- a/neutron/db/l3_rpc_base.py +++ b/neutron/db/l3_rpc_base.py @@ -18,6 +18,7 @@ from oslo.config import cfg from neutron.common import constants from neutron.common import utils from neutron import context as neutron_context +from neutron.extensions import l3 from neutron.extensions import portbindings from neutron import manager from neutron.openstack.common import jsonutils @@ -104,9 +105,13 @@ class L3RpcCallbackMixin(object): LOG.debug(_("New status for floating IP %(floatingip_id)s: " "%(status)s"), {'floatingip_id': floatingip_id, 'status': status}) - l3_plugin.update_floatingip_status(context, - floatingip_id, - status) + try: + l3_plugin.update_floatingip_status(context, + floatingip_id, + status) + except l3.FloatingIPNotFound: + LOG.debug(_("Floating IP: %s no longer present."), + floatingip_id) # Find all floating IPs known to have been the given router # for which an update was not received. Set them DOWN mercilessly # This situation might occur for some asynchronous backends if