You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sa...@apache.org on 2015/06/17 11:55:09 UTC

git commit: updated refs/heads/master to d702b63

Repository: cloudstack
Updated Branches:
  refs/heads/master 47278556f -> d702b63bf


CLOUDSTACK-8569: The latter snapshot export for the same volume will fail is 2 snapshot exports are queued
This closes #469


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

Branch: refs/heads/master
Commit: d702b63bfb91f744d838ae081430308b5190fff6
Parents: 4727855
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Wed Jun 17 15:16:43 2015 +0530
Committer: Sanjay Tripathi <sa...@citrix.com>
Committed: Wed Jun 17 15:27:03 2015 +0530

----------------------------------------------------------------------
 .../xenserver/resource/XenServerStorageProcessor.java         | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d702b63b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerStorageProcessor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerStorageProcessor.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerStorageProcessor.java
index 0cf40f5..f489e5c 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerStorageProcessor.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerStorageProcessor.java
@@ -1157,10 +1157,15 @@ public class XenServerStorageProcessor implements StorageProcessor {
             if (volume == null) {
                 throw new InternalErrorException("Could not destroy snapshot on volume " + volumeUuid + " due to can not find it");
             }
+            // To avoid deleting snapshots which are still waiting in queue to get backed up.
+            VDI avoidSnapshot = getVDIbyUuid(conn, avoidSnapshotUuid);
+            if (avoidSnapshot == null) {
+                throw new InternalErrorException("Could not find current snapshot " + avoidSnapshotUuid);
+            }
             final Set<VDI> snapshots = volume.getSnapshots(conn);
             for (final VDI snapshot : snapshots) {
                 try {
-                    if (!snapshot.getUuid(conn).equals(avoidSnapshotUuid)) {
+                    if (!snapshot.getUuid(conn).equals(avoidSnapshotUuid) && snapshot.getSnapshotTime(conn).before(avoidSnapshot.getSnapshotTime(conn))) {
                         snapshot.destroy(conn);
                     }
                 } catch (final Exception e) {