diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 5d15a84ee546..12386cfefb3e 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -5657,10 +5657,14 @@ class ComputeManager(manager.Manager): and volume. """ - bdm = objects.BlockDeviceMapping.get_by_volume_and_instance( - context, volume_id, instance.uuid) - self._detach_volume(context, bdm, instance, - attachment_id=attachment_id) + @utils.synchronized(instance.uuid) + def do_detach_volume(context, volume_id, instance, attachment_id): + bdm = objects.BlockDeviceMapping.get_by_volume_and_instance( + context, volume_id, instance.uuid) + self._detach_volume(context, bdm, instance, + attachment_id=attachment_id) + + do_detach_volume(context, volume_id, instance, attachment_id) def _init_volume_connection(self, context, new_volume, old_volume_id, connector, bdm,