diff options
| author | Peter Feiner <peter@gridcentric.ca> | 2013-05-15 14:03:56 -0500 |
|---|---|---|
| committer | Peter Feiner <peter@gridcentric.ca> | 2013-06-27 20:03:25 +0000 |
| commit | 3d3affc752613f0f12cd25109b1d5be05bfe0c6f (patch) | |
| tree | 3f3529db443dd1d198cde679d7c8ae008f2fe04c /nova/compute | |
| parent | 9900e0549118e76df0ee47c68b76a1bc5ed1bd59 (diff) | |
| download | nova-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-x | nova/compute/manager.py | 6 |
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) |
