From 7cc8ccead541f6089ed48d9a1c335daa458b74fc Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Tue, 27 Aug 2013 15:23:31 +0530 Subject: [PATCH] CLOUDSTACK-4471. If an instance fails to start then mark the volumes allocated as part of VM creation as removed and set the volume state as destroyed. --- server/src/com/cloud/storage/VolumeManagerImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java index 6b7788b31c2..35fe72a43a3 100644 --- a/server/src/com/cloud/storage/VolumeManagerImpl.java +++ b/server/src/com/cloud/storage/VolumeManagerImpl.java @@ -2676,8 +2676,14 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { @Override public void destroyVolume(VolumeVO volume) { try { - volService.destroyVolume(volume.getId()); - } catch (ConcurrentOperationException e) { + // Mark volume as removed if volume has not been created on primary + if (volume.getState() == Volume.State.Allocated) { + _volsDao.remove(volume.getId()); + stateTransitTo(volume, Volume.Event.DestroyRequested); + } else { + volService.destroyVolume(volume.getId()); + } + } catch (Exception e) { s_logger.debug("Failed to destroy volume" + volume.getId(), e); throw new CloudRuntimeException("Failed to destroy volume" + volume.getId(), e); }