From 7bc25643a932a64670083de219d1ef8bc2f53aca Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Thu, 5 May 2011 17:53:44 -0700 Subject: [PATCH] propagating fix from 2.2.4 --- .../com/cloud/agent/manager/AgentManagerImpl.java | 1 + .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index b35138c3c2c..4d282e15c28 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -1822,6 +1822,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS HostVO host = _hostDao.findById(id); if (!_hostDao.directConnect(host, _nodeId)) { s_logger.info("Someone else is loading " + host); + resource.disconnected(); return null; } } diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index a4d2f158e88..e05c3ad3ee8 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -700,7 +700,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene } catch (OperationTimedoutException e) { s_logger.debug("Unable to send the start command to host " + dest.getHost()); if (e.isActive()) { - _haMgr.scheduleStop(vm, destHostId, WorkType.ForceStop); + _haMgr.scheduleStop(vm, destHostId, WorkType.CheckStop); } canRetry = false; throw new AgentUnavailableException("Unable to start " + vm.getHostName(), destHostId, e); @@ -734,12 +734,14 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene } } } finally { - if (startedVm == null && canRetry) { - // decrement only for user VM's and newly created VM - if (vm.getType().equals(VirtualMachine.Type.User) && (vm.getLastHostId() == null)) { + if (startedVm == null) { + // decrement only for user VM's and newly created VM + if (vm.getType().equals(VirtualMachine.Type.User) && (vm.getLastHostId() == null)) { _accountMgr.decrementResourceCount(vm.getAccountId(), ResourceType.user_vm); } - changeState(vm, Event.OperationFailed, null, work, Step.Done); + if (canRetry) { + changeState(vm, Event.OperationFailed, null, work, Step.Done); + } } }