From d702b63bfb91f744d838ae081430308b5190fff6 Mon Sep 17 00:00:00 2001 From: Sanjay Tripathi Date: Wed, 17 Jun 2015 15:16:43 +0530 Subject: [PATCH] CLOUDSTACK-8569: The latter snapshot export for the same volume will fail is 2 snapshot exports are queued This closes #469 --- .../xenserver/resource/XenServerStorageProcessor.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 0cf40f58d63..f489e5c949e 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 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) {