From 8326dfb76f3072dab63243ef2cd62fa3e7b7c688 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Tue, 27 Aug 2013 16:28:16 -0700 Subject: [PATCH] CLOUDSTACK-4518: make folder sync resilience with possible runtime situation --- .../storage/resource/VmwareStorageLayoutHelper.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 c61f15e2b4c..d60abad3519 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");