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");

Reply via email to