diff --git a/server/src/com/cloud/agent/manager/AgentAttache.java b/server/src/com/cloud/agent/manager/AgentAttache.java index 06353e0b460..6713bec4db1 100644 --- a/server/src/com/cloud/agent/manager/AgentAttache.java +++ b/server/src/com/cloud/agent/manager/AgentAttache.java @@ -124,6 +124,10 @@ public abstract class AgentAttache { _status = Status.Up; } + public boolean isReady() { + return _status == Status.Up; + } + public boolean isConnecting() { return _status == Status.Connecting; } diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 6c2d0cdca7c..c85e1015ad9 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -903,7 +903,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { if (!monitor.second().processConnect(host, cmd[i])) { s_logger.info("Monitor " + monitor.second().getClass().getSimpleName() + " says not to continue the connect process for " + hostId); handleDisconnect(attache, Event.AgentDisconnected, false); - return null; + return attache; } } } @@ -1034,12 +1034,14 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory { resource.disconnected(); return null; } - - StartupAnswer[] answers = new StartupAnswer[cmds.length]; - for (int i = 0; i < answers.length; i++) { - answers[i] = new StartupAnswer(cmds[i], attache.getId(), _pingInterval); + if( attache.isReady()) { + StartupAnswer[] answers = new StartupAnswer[cmds.length]; + for (int i = 0; i < answers.length; i++) { + answers[i] = new StartupAnswer(cmds[i], attache.getId(), _pingInterval); + } + + attache.process(answers); } - attache.process(answers); return attache; }