From 9b784edec41546ca762af207ce438df11768e205 Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Wed, 4 May 2011 18:48:58 -0700 Subject: [PATCH] be more responsible if we decide the agent should not connect --- server/src/com/cloud/agent/manager/AgentManagerImpl.java | 1 + server/src/com/cloud/vm/VirtualMachineManagerImpl.java | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 78a7c3e2d3a..2d942fe0439 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -1707,6 +1707,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 8026da254a1..d19c13a83d0 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -686,7 +686,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); @@ -720,12 +720,14 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene } } } finally { - if (startedVm == null && canRetry) { + 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); + } } }