Repository: cloudstack Updated Branches: refs/heads/master b8d639640 -> 6b5c874fe
should not duplicate vm instance id, during the volume migration Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6b5c874f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6b5c874f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6b5c874f Branch: refs/heads/master Commit: 6b5c874fe93d18abfac09db7ad4f077a28d6102d Parents: b8d6396 Author: Edison Su <sudi...@gmail.com> Authored: Thu Oct 30 21:27:51 2014 -0700 Committer: Edison Su <sudi...@gmail.com> Committed: Thu Oct 30 21:27:51 2014 -0700 ---------------------------------------------------------------------- .../src/com/cloud/storage/dao/VolumeDaoImpl.java | 3 +++ .../cloudstack/storage/volume/VolumeServiceImpl.java | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6b5c874f/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VolumeDaoImpl.java index fb93610..4ad196c 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<VolumeVO, Long> 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) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6b5c874f/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java ---------------------------------------------------------------------- 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 9174d89..15e040d 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<VolumeApiResult> destroyFuture = expungeVolumeAsync(srcVolume); - destroyFuture.get(); - future.complete(res); + try { + destroyVolume(srcVolume.getId()); + srcVolume = volFactory.getVolume(srcVolume.getId()); + AsyncCallFuture<VolumeApiResult> 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);