CLOUDSTACK-4518: make folder sync resilience with possible runtime situation
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/d6bac146 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/d6bac146 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/d6bac146 Branch: refs/heads/master Commit: d6bac1465a502aa4615f885702bec58e5626a3eb Parents: e2cd216 Author: Kelven Yang <[email protected]> Authored: Tue Aug 27 16:28:16 2013 -0700 Committer: Kelven Yang <[email protected]> Committed: Wed Sep 4 14:49:46 2013 -0700 ---------------------------------------------------------------------- .../storage/resource/VmwareStorageLayoutHelper.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d6bac146/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageLayoutHelper.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageLayoutHelper.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageLayoutHelper.java index c61f15e..d60abad 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageLayoutHelper.java +++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageLayoutHelper.java @@ -129,17 +129,20 @@ public class VmwareStorageLayoutHelper { vmdkLinkedCloneModePair[1], dcMo.getMor(), true); } - s_logger.info("sync " + vmdkLinkedCloneModeLegacyPair[0] + "->" + vmdkLinkedCloneModePair[0]); - ds.moveDatastoreFile(vmdkLinkedCloneModeLegacyPair[0], dcMo.getMor(), ds.getMor(), - vmdkLinkedCloneModePair[0], dcMo.getMor(), true); + if(ds.fileExists(vmdkLinkedCloneModeLegacyPair[0])) { + s_logger.info("sync " + vmdkLinkedCloneModeLegacyPair[0] + "->" + vmdkLinkedCloneModePair[0]); + ds.moveDatastoreFile(vmdkLinkedCloneModeLegacyPair[0], dcMo.getMor(), ds.getMor(), + vmdkLinkedCloneModePair[0], dcMo.getMor(), true); + } + // Note: we will always return a path return vmdkLinkedCloneModePair[0]; } public static void syncVolumeToRootFolder(DatacenterMO dcMo, DatastoreMO ds, String vmdkName) throws Exception { String fileDsFullPath = ds.searchFileInSubFolders(vmdkName + ".vmdk", false); if(fileDsFullPath == null) - throw new Exception("Unable to find " + vmdkName + ".vmdk in datastore: " + ds.getName()); + return; DatastoreFile srcDsFile = new DatastoreFile(fileDsFullPath); String companionFilePath = srcDsFile.getCompanionPath(vmdkName + "-flat.vmdk");
