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); }