Comment 1 for bug 1437516

Revision history for this message
Vish Ishaya (vishvananda) wrote :

I'm thinking something like the following

diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 6f756e4..2e7aebb 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -1533,6 +1533,10 @@ class ComputeManager(manager.Manager):
                         reason=six.text_type(exc_info[1]))
             else:
                 # not re-scheduling, go to error:
+ if bdms is None:
+ bdms = objects.BlockDeviceMappingList.get_by_instance_uuid(
+ context, instance.uuid)
+ self._cleanup_volumes(context, instance.uuid, bdms)
                 raise exc_info[0], exc_info[1], exc_info[2]

         # spawn success
@@ -1569,7 +1573,6 @@ class ComputeManager(manager.Manager):

             self._shutdown_instance(context, instance,
                                     bdms, requested_networks)
- self._cleanup_volumes(context, instance.uuid, bdms)
         except Exception:
             # do not attempt retry if clean up failed:
             with excutils.save_and_reraise_exception():