CLOUDSTACK-4324: need to clean up snapshot_store_ref, if creating snapshot failed.

This commit is contained in:
Edison Su 2013-08-14 14:18:02 -07:00
parent 0f60b5d41c
commit 374de76dae
2 changed files with 10 additions and 4 deletions

View File

@ -214,7 +214,8 @@ public class SnapshotServiceImpl implements SnapshotService {
try {
result = future.get();
if (result.isFailed()) {
s_logger.debug("Failed to create snapshot:" + result.getResult());
snapshot.processEvent(Snapshot.Event.OperationFailed);
snapshot.processEvent(Event.OperationFailed);
throw new CloudRuntimeException(result.getResult());
}
return result;
@ -224,8 +225,10 @@ public class SnapshotServiceImpl implements SnapshotService {
} catch (ExecutionException e) {
s_logger.debug("Failed to create snapshot", e);
throw new CloudRuntimeException("Failed to create snapshot", e);
} catch (NoTransitionException e) {
s_logger.debug("Failed to create snapshot", e);
throw new CloudRuntimeException("Failed to create snapshot", e);
}
}
// if a snapshot has parent snapshot, the new snapshot should be stored in

View File

@ -352,8 +352,11 @@ public class KVMStorageProcessor implements StorageProcessor {
secondaryStoragePool = storagePoolMgr.getStoragePoolByURI(
secondaryStorageUrl + File.separator + volumeDir
);
if (!srcVolumeName.endsWith(".qcow2")) {
srcVolumeName = srcVolumeName + ".qcow2";
}
KVMPhysicalDisk volume = secondaryStoragePool
.getPhysicalDisk(srcVolumeName + ".qcow2");
.getPhysicalDisk(srcVolumeName);
storagePoolMgr.copyPhysicalDisk(volume, volumeName,
primaryPool);
VolumeObjectTO newVol = new VolumeObjectTO();
@ -414,7 +417,7 @@ public class KVMStorageProcessor implements StorageProcessor {
storagePoolMgr.copyPhysicalDisk(volume,
destVolumeName,secondaryStoragePool);
VolumeObjectTO newVol = new VolumeObjectTO();
newVol.setPath(destVolumePath + File.separator + volumeName);
newVol.setPath(destVolumePath + File.separator + destVolumeName);
return new CopyCmdAnswer(newVol);
} catch (CloudRuntimeException e) {
return new CopyCmdAnswer(e.toString());