CLOUDSTACK-1192: fix collectVmDiskStatistics issue when stopping a vm

(Cherry-picked from commit 65c1c986da)
(cherry picked from commit d0ffc9e339)

Signed-off-by: animesh <animesh@apache.org>
This commit is contained in:
Wei Zhou 2013-09-03 11:45:34 +02:00 committed by animesh
parent fbba6d0e3e
commit 51707d8c71
1 changed files with 5 additions and 4 deletions

View File

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