CLOUDSTACK-1192: fix collectVmDiskStatistics issue when stopping a vm

(Cherry-picked from commit 65c1c986da2cd14b9138a229ad6843ffbf46f3f4)
(cherry picked from commit d0ffc9e33985a4a19277b94df6d13a94b53c317c)

Signed-off-by: animesh <anim...@apache.org>


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

Branch: refs/heads/4.2
Commit: 51707d8c71f7b1f36177e440e813b7d1df413ddb
Parents: fbba6d0
Author: Wei Zhou <w.z...@leaseweb.com>
Authored: Tue Sep 3 11:45:34 2013 +0200
Committer: animesh <anim...@apache.org>
Committed: Tue Sep 3 16:33:18 2013 -0700

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51707d8c/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 251c203..73d4602 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -3488,8 +3488,8 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Use
     public void collectVmDiskStatistics (UserVmVO userVm) {
         // support KVM only util 2013.06.25
         if (!userVm.getHypervisorType().equals(HypervisorType.KVM))
-            return;        
-       // Collect vm disk statistics from host before stopping Vm
+            return;
+       s_logger.debug("Collect vm disk statistics from host before stopping 
Vm");
        long hostId = userVm.getHostId();
        List<String> vmNames = new ArrayList<String>();
        vmNames.add(userVm.getInstanceName());
@@ -3511,8 +3511,9 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Use
             try {
                 txn.start();
                 HashMap<String, List<VmDiskStatsEntry>> vmDiskStatsByName = 
diskStatsAnswer.getVmDiskStatsMap();
+                if (vmDiskStatsByName == null)
+                    return;
                 List<VmDiskStatsEntry> vmDiskStats = 
vmDiskStatsByName.get(userVm.getInstanceName());
-
                 if (vmDiskStats == null)
                    return;
 
@@ -4980,7 +4981,7 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Use
     @Override
     public void prepareStop(VirtualMachineProfile<UserVmVO> profile) {
         UserVmVO vm = _vmDao.findById(profile.getId());
-        if (vm.getState() == State.Running)
+        if (vm != null && vm.getState() == State.Stopping)
             collectVmDiskStatistics(vm);
     }
     

Reply via email to