diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java index fb93610f0ab..4ad196c51ec 100755 --- a/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java +++ b/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java @@ -594,8 +594,11 @@ public class VolumeDaoImpl extends GenericDaoBase implements Vol VolumeVO srcVol = findById(srcVolId); VolumeVO destVol = findById(destVolId); String uuid = srcVol.getUuid(); + Long instanceId = srcVol.getInstanceId(); srcVol.setUuid(null); + srcVol.setInstanceId(null); destVol.setUuid(uuid); + destVol.setInstanceId(instanceId); update(srcVolId, srcVol); update(destVolId, destVol); } catch (Exception e) { diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java index 9174d89eff0..15e040dde2b 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java @@ -830,6 +830,7 @@ public class VolumeServiceImpl implements VolumeService { } VolumeVO newVol = new VolumeVO(volume); + newVol.setInstanceId(null); newVol.setPoolId(pool.getId()); newVol.setFolder(folder); newVol.setPodId(pool.getPodId()); @@ -1021,11 +1022,15 @@ public class VolumeServiceImpl implements VolumeService { srcVolume.processEvent(Event.OperationSuccessed); destVolume.processEvent(Event.OperationSuccessed, result.getAnswer()); _volumeDao.updateUuid(srcVolume.getId(), destVolume.getId()); - destroyVolume(srcVolume.getId()); - srcVolume = volFactory.getVolume(srcVolume.getId()); - AsyncCallFuture destroyFuture = expungeVolumeAsync(srcVolume); - destroyFuture.get(); - future.complete(res); + try { + destroyVolume(srcVolume.getId()); + srcVolume = volFactory.getVolume(srcVolume.getId()); + AsyncCallFuture destroyFuture = expungeVolumeAsync(srcVolume); + destroyFuture.get(); + future.complete(res); + } catch (Exception e) { + s_logger.debug("failed to clean up volume on storage", e); + } return null; } catch (Exception e) { s_logger.debug("Failed to process copy volume callback", e);