summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authorPeter Feiner <peter@gridcentric.ca>2013-05-15 14:03:56 -0500
committerPeter Feiner <peter@gridcentric.ca>2013-06-27 20:03:25 +0000
commit3d3affc752613f0f12cd25109b1d5be05bfe0c6f (patch)
tree3f3529db443dd1d198cde679d7c8ae008f2fe04c /nova/compute
parent9900e0549118e76df0ee47c68b76a1bc5ed1bd59 (diff)
downloadnova-3d3affc752613f0f12cd25109b1d5be05bfe0c6f.tar.gz
nova-3d3affc752613f0f12cd25109b1d5be05bfe0c6f.tar.xz
nova-3d3affc752613f0f12cd25109b1d5be05bfe0c6f.zip
Ignore lifecycle events for non-existent instances
Since event delivery is asynchronous, there's an inherent yet benign race in the event handler querying the database for a deleted instance. Fixes bug #1180501. Change-Id: I8e478fb13bedfc86730018ba849ecc71d4286f0d
Diffstat (limited to 'nova/compute')
-rwxr-xr-xnova/compute/manager.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index a242a121d..0c6d4f640 100755
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -644,7 +644,11 @@ class ComputeManager(manager.SchedulerDependentManager):
def handle_events(self, event):
if isinstance(event, virtevent.LifecycleEvent):
- self.handle_lifecycle_event(event)
+ try:
+ self.handle_lifecycle_event(event)
+ except exception.InstanceNotFound:
+ LOG.debug(_("Event %s arrived for non-existent instance. The "
+ "instance was probably deleted.") % event)
else:
LOG.debug(_("Ignoring event %s") % event)