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/16 03:47:53 UTC
git commit: updated refs/heads/4.3 to 9ed4ab7
Updated Branches:
refs/heads/4.3 90e01b1e1 -> 9ed4ab731
CLOUDSTACK-5395: mark snapshot_store_ref as destroyed 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/9ed4ab73
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9ed4ab73
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9ed4ab73
Branch: refs/heads/4.3
Commit: 9ed4ab731fc5d722e3e0b819958ec8a2f4beccdb
Parents: 90e01b1
Author: Edison Su <su...@gmail.com>
Authored: Wed Jan 15 18:46:29 2014 -0800
Committer: Edison Su <su...@gmail.com>
Committed: Wed Jan 15 18:46:57 2014 -0800
----------------------------------------------------------------------
.../storage/snapshot/SnapshotServiceImpl.java | 4 ++
.../xen/resource/XenServerStorageProcessor.java | 48 +++++++++++---------
2 files changed, 30 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9ed4ab73/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java
index f1a7d74..3b456ce 100644
--- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java
+++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java
@@ -313,6 +313,10 @@ public class SnapshotServiceImpl implements SnapshotService {
if (result.isFailed()) {
try {
destSnapshot.processEvent(Event.OperationFailed);
+ //if backup snapshot failed, mark srcSnapshot in snapshot_store_ref as failed also
+ srcSnapshot.processEvent(Event.DestroyRequested);
+ srcSnapshot.processEvent(Event.OperationSuccessed);
+
srcSnapshot.processEvent(Snapshot.Event.OperationFailed);
} catch (NoTransitionException e) {
s_logger.debug("Failed to update state: " + e.toString());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9ed4ab73/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 dd26861..d5ef334 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
@@ -31,23 +31,6 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
-import org.apache.log4j.Logger;
-import org.apache.xmlrpc.XmlRpcException;
-
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Host;
-import com.xensource.xenapi.PBD;
-import com.xensource.xenapi.Pool;
-import com.xensource.xenapi.SR;
-import com.xensource.xenapi.Types;
-import com.xensource.xenapi.Types.BadServerResponse;
-import com.xensource.xenapi.Types.VmPowerState;
-import com.xensource.xenapi.Types.XenAPIException;
-import com.xensource.xenapi.VBD;
-import com.xensource.xenapi.VDI;
-import com.xensource.xenapi.VM;
-import com.xensource.xenapi.VMGuestMetrics;
-
import org.apache.cloudstack.storage.command.AttachAnswer;
import org.apache.cloudstack.storage.command.AttachCommand;
import org.apache.cloudstack.storage.command.AttachPrimaryDataStoreAnswer;
@@ -66,6 +49,8 @@ import org.apache.cloudstack.storage.datastore.protocol.DataStoreProtocol;
import org.apache.cloudstack.storage.to.SnapshotObjectTO;
import org.apache.cloudstack.storage.to.TemplateObjectTO;
import org.apache.cloudstack.storage.to.VolumeObjectTO;
+import org.apache.log4j.Logger;
+import org.apache.xmlrpc.XmlRpcException;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.CreateStoragePoolCommand;
@@ -88,6 +73,19 @@ import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.storage.encoding.DecodedDataObject;
import com.cloud.utils.storage.encoding.DecodedDataStore;
import com.cloud.utils.storage.encoding.Decoder;
+import com.xensource.xenapi.Connection;
+import com.xensource.xenapi.Host;
+import com.xensource.xenapi.PBD;
+import com.xensource.xenapi.Pool;
+import com.xensource.xenapi.SR;
+import com.xensource.xenapi.Types;
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VmPowerState;
+import com.xensource.xenapi.Types.XenAPIException;
+import com.xensource.xenapi.VBD;
+import com.xensource.xenapi.VDI;
+import com.xensource.xenapi.VM;
+import com.xensource.xenapi.VMGuestMetrics;
public class XenServerStorageProcessor implements StorageProcessor {
private static final Logger s_logger = Logger.getLogger(XenServerStorageProcessor.class);
@@ -488,11 +486,15 @@ public class XenServerStorageProcessor implements StorageProcessor {
Boolean isISCSI = IsISCSI(type);
String snapshotParentUUID = getVhdParent(conn, srUUID, snapshotUUID, isISCSI);
- String preSnapshotParentUUID = getVhdParent(conn, srUUID, preSnapshotUUID, isISCSI);
- if( snapshotParentUUID != null && snapshotParentUUID.equals(preSnapshotParentUUID)) {
- // this is empty snapshot, remove it
- snapshot.destroy(conn);
- snapshotUUID = preSnapshotUUID;
+ try {
+ String preSnapshotParentUUID = getVhdParent(conn, srUUID, preSnapshotUUID, isISCSI);
+ if( snapshotParentUUID != null && snapshotParentUUID.equals(preSnapshotParentUUID)) {
+ // this is empty snapshot, remove it
+ snapshot.destroy(conn);
+ snapshotUUID = preSnapshotUUID;
+ }
+ } catch(Exception e) {
+ s_logger.debug("Failed to get parent snapshot", e);
}
}
SnapshotObjectTO newSnapshot = new SnapshotObjectTO();
@@ -1328,6 +1330,8 @@ public class XenServerStorageProcessor implements StorageProcessor {
}
}
} catch (Exception e) {
+ s_logger.debug("Failed to get parent snapshots, take full snapshot", e);
+ fullbackup = true;
}
}