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 2013/08/01 22:59:58 UTC

git commit: updated refs/heads/master to 239c6ce

Updated Branches:
  refs/heads/master 11c2265d1 -> 239c6cef4


CLOUDSTACK-4008: fix snapshot npe if its volume is deleted


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

Branch: refs/heads/master
Commit: 239c6cef45b9655a1373f3c472965cbbc6001b4b
Parents: 11c2265
Author: Edison Su <su...@gmail.com>
Authored: Thu Aug 1 13:57:47 2013 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Thu Aug 1 13:59:41 2013 -0700

----------------------------------------------------------------------
 .../org/apache/cloudstack/storage/to/SnapshotObjectTO.java  | 9 +++++++--
 .../cloudstack/storage/volume/VolumeDataFactoryImpl.java    | 3 +++
 2 files changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/239c6cef/core/src/org/apache/cloudstack/storage/to/SnapshotObjectTO.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/to/SnapshotObjectTO.java b/core/src/org/apache/cloudstack/storage/to/SnapshotObjectTO.java
index d2cb72a..b4829bf 100644
--- a/core/src/org/apache/cloudstack/storage/to/SnapshotObjectTO.java
+++ b/core/src/org/apache/cloudstack/storage/to/SnapshotObjectTO.java
@@ -22,6 +22,7 @@ import com.cloud.agent.api.to.DataObjectType;
 import com.cloud.agent.api.to.DataStoreTO;
 import com.cloud.agent.api.to.DataTO;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
+import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
 
 public class SnapshotObjectTO implements DataTO {
     private String path;
@@ -40,8 +41,12 @@ public class SnapshotObjectTO implements DataTO {
     public SnapshotObjectTO(SnapshotInfo snapshot) {
         this.path = snapshot.getPath();
         this.setId(snapshot.getId());
-        this.volume = (VolumeObjectTO) snapshot.getBaseVolume().getTO();
-        this.setVmName(snapshot.getBaseVolume().getAttachedVmName());
+        VolumeInfo vol = snapshot.getBaseVolume();
+        if (vol != null) {
+            this.volume = (VolumeObjectTO)vol.getTO();
+            this.setVmName(vol.getAttachedVmName());
+        }
+
         SnapshotInfo parentSnapshot = snapshot.getParent();
         if (parentSnapshot != null) {
             this.parentSnapshotPath = parentSnapshot.getPath();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/239c6cef/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java
index 2512c49..1d75ba1 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeDataFactoryImpl.java
@@ -74,6 +74,9 @@ public class VolumeDataFactoryImpl implements VolumeDataFactory {
     @Override
     public VolumeInfo getVolume(long volumeId) {
         VolumeVO volumeVO = volumeDao.findById(volumeId);
+        if (volumeVO == null) {
+            return null;
+        }
         VolumeObject vol = null;
         if (volumeVO.getPoolId() == null) {
             DataStore store = null;