From 51707d8c71f7b1f36177e440e813b7d1df413ddb Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Tue, 3 Sep 2013 11:45:34 +0200 Subject: [PATCH] CLOUDSTACK-1192: fix collectVmDiskStatistics issue when stopping a vm (Cherry-picked from commit 65c1c986da2cd14b9138a229ad6843ffbf46f3f4) (cherry picked from commit d0ffc9e33985a4a19277b94df6d13a94b53c317c) Signed-off-by: animesh --- server/src/com/cloud/vm/UserVmManagerImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 251c203f13b..73d46028e29 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 vmNames = new ArrayList(); vmNames.add(userVm.getInstanceName()); @@ -3511,8 +3511,9 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use try { txn.start(); HashMap> vmDiskStatsByName = diskStatsAnswer.getVmDiskStatsMap(); + if (vmDiskStatsByName == null) + return; List 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 profile) { UserVmVO vm = _vmDao.findById(profile.getId()); - if (vm.getState() == State.Running) + if (vm != null && vm.getState() == State.Stopping) collectVmDiskStatistics(vm); }