From 57cc61396d7552ee45be654fed24385579a76646 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 31 Jan 2012 10:23:58 -0800 Subject: [PATCH] Schedule HA is a part of handleDisconnect, not removeAgent Reviewed-by: Alex Huang --- .../cloud/agent/manager/AgentManagerImpl.java | 20 +++++++++---------- .../manager/ClusteredAgentManagerImpl.java | 6 +++--- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index bc76cc128dc..73af9351217 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -921,7 +921,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { } } - public void removeAgent(AgentAttache attache, Status nextState, Event event, Boolean investigate) { + public void removeAgent(AgentAttache attache, Status nextState) { if (attache == null) { return; } @@ -946,13 +946,6 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { removed.disconnect(nextState); } - HostVO host = _hostDao.findById(hostId); - if (event != null && investigate != null) { - if (!event.equals(Event.PrepareUnmanaged) && !event.equals(Event.HypervisorVersionChanged) && (host.getStatus() == Status.Alert || host.getStatus() == Status.Down)) { - _haMgr.scheduleRestartForVmsOnHost(host, investigate); - } - } - for (Pair monitor : _hostMonitors) { if (s_logger.isDebugEnabled()) { s_logger.debug("Sending Disconnect to listener: " + monitor.second().getClass().getName()); @@ -1012,7 +1005,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { HostVO host = _hostDao.findById(hostId); if (host == null) { s_logger.warn("Can't find host with " + hostId); - removeAgent(attache, Status.Removed, event, investigate); + removeAgent(attache, Status.Removed); return true; } @@ -1022,7 +1015,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { s_logger.debug("Host " + hostId + " is already " + currentState); } if (currentState != Status.PrepareForMaintenance) { - removeAgent(attache, currentState, event, investigate); + removeAgent(attache, currentState); } return true; } @@ -1110,8 +1103,13 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { if (s_logger.isDebugEnabled()) { s_logger.debug("Deregistering link for " + hostId + " with state " + nextState); } + + removeAgent(attache, nextState); _hostDao.disconnect(host, event, _nodeId); - removeAgent(attache, nextState, event, investigate); + + if (!event.equals(Event.PrepareUnmanaged) && !event.equals(Event.HypervisorVersionChanged) && (host.getStatus() == Status.Alert || host.getStatus() == Status.Down)) { + _haMgr.scheduleRestartForVmsOnHost(host, investigate); + } return true; } diff --git a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java index 3350807e3f3..c1d58f698c4 100755 --- a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java @@ -169,7 +169,7 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust if (s_logger.isInfoEnabled()) { s_logger.info(host + " is detected down, but we have a forward attache running, disconnect this one before launching the host"); } - removeAgent(agentattache, Status.Disconnected, null, null); + removeAgent(agentattache, Status.Disconnected); } else { continue; } @@ -709,12 +709,12 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust } @Override - public void removeAgent(AgentAttache attache, Status nextState, Event event, Boolean investigate) { + public void removeAgent(AgentAttache attache, Status nextState) { if (attache == null) { return; } - super.removeAgent(attache, nextState, event, investigate); + super.removeAgent(attache, nextState); } @Override