From f0e048a9688763feed8126df847fe076d155b5e4 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Thu, 26 Jan 2012 15:11:24 -0800 Subject: [PATCH] More protective cleanup when exporting snaphost to reduce chances of leaving intermediate files behind under soft error conditions --- .../vmware/mo/VirtualMachineMO.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java index 4890ee5ea0c..4a2624426bf 100755 --- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java @@ -1187,15 +1187,16 @@ public class VirtualMachineMO extends BaseMO { try { if(state == HttpNfcLeaseState.ready) { final HttpNfcLeaseMO.ProgressReporter progressReporter = leaseMo.createProgressReporter(); + + boolean success = false; + List fileNames = new ArrayList(); try { HttpNfcLeaseInfo leaseInfo = leaseMo.getLeaseInfo(); final long totalBytes = leaseInfo.getTotalDiskCapacityInKB() * 1024; long totalBytesDownloaded = 0; HttpNfcLeaseDeviceUrl[] deviceUrls = leaseInfo.getDeviceUrl(); - if(deviceUrls != null) { - List fileNames = new ArrayList(); - + if(deviceUrls != null) { OvfFile[] ovfFiles = new OvfFile[deviceUrls.length]; for (int i = 0; i < deviceUrls.length; i++) { String deviceId = deviceUrls[i].getKey(); @@ -1251,19 +1252,25 @@ public class VirtualMachineMO extends BaseMO { } String result = command.execute(); - if(result == null) { - if(leaveOvaFileOnly) { - for(String name: fileNames) { - new File(name).delete(); - } - } + if(result == null) { + success = true; } - } + } } } catch(Throwable e) { s_logger.error("Unexpected exception ", e); } finally { - progressReporter.close(); + progressReporter.close(); + + if(leaveOvaFileOnly) { + for(String name : fileNames) { + new File(name).delete(); + } + } + + if(!success) { + new File(exportDir + File.separator + exportName + ".ova").delete(); + } } } } finally {