You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2014/01/08 23:15:54 UTC

git commit: updated refs/heads/4.3 to f438f55

Updated Branches:
  refs/heads/4.3 6b756c8b3 -> f438f55ab


CLOUDSTACK-5370: delete snapshot on primary storage in case of backup snapshot failed.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f438f55a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f438f55a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f438f55a

Branch: refs/heads/4.3
Commit: f438f55ab091113b29c64326310a2d704e6c0a4a
Parents: 6b756c8
Author: edison <su...@gmail.com>
Authored: Wed Jan 8 14:14:52 2014 -0800
Committer: edison <su...@gmail.com>
Committed: Wed Jan 8 14:15:29 2014 -0800

----------------------------------------------------------------------
 .../xen/resource/XenServerStorageProcessor.java      | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f438f55a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java
index 5df37ea..dd26861 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java
@@ -1304,6 +1304,7 @@ public class XenServerStorageProcessor implements StorageProcessor {
         Long physicalSize = null;
         Map<String, String> options = cmd.getOptions();
         boolean fullbackup = Boolean.parseBoolean(options.get("fullSnapshot"));
+        boolean result = false;
         try {
             SR primaryStorageSR = hypervisorResource.getSRByNameLabelandHost(conn, primaryStorageNameLabel);
             if (primaryStorageSR == null) {
@@ -1423,17 +1424,23 @@ public class XenServerStorageProcessor implements StorageProcessor {
             } else {
                 newSnapshot.setParentSnapshotPath(prevBackupUuid);
             }
+            result = true;
             return new CopyCmdAnswer(newSnapshot);
         } catch (XenAPIException e) {
             details = "BackupSnapshot Failed due to " + e.toString();
             s_logger.warn(details, e);
-            // remove last bad primary snapshot when exception happens
-            destroySnapshotOnPrimaryStorage(conn, snapshotUuid);
         } catch (Exception e) {
             details = "BackupSnapshot Failed due to " + e.getMessage();
             s_logger.warn(details, e);
-            // remove last bad primary snapshot when exception happens
-            destroySnapshotOnPrimaryStorage(conn, snapshotUuid);
+        } finally {
+            if (!result) {
+                // remove last bad primary snapshot when exception happens
+                try {
+                    destroySnapshotOnPrimaryStorage(conn, snapshotUuid);
+                } catch (Exception e) {
+                    s_logger.debug("clean up snapshot failed", e);
+                }
+            }
         }
 
         return new CopyCmdAnswer(details);