From aa00ef90c971e8103af5e506d681e2dfb44ff45d Mon Sep 17 00:00:00 2001 From: Rakesh Date: Fri, 25 Mar 2022 15:46:45 +0100 Subject: [PATCH] Prevent vm's from stopping while enabling maintenance mode (#4636) Sometimes when host isput into maintenance, the connection get disconnected and as result vm's are stopped. So check for extra state before considering host as down and stopping the vm's --- .../main/java/com/cloud/agent/manager/AgentManagerImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index 70a4fa78d5f..b65ad62c8d5 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -875,8 +875,10 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl agentStatusTransitTo(host, Status.Event.Ping, _nodeId); return false; } else if (determinedState == Status.Disconnected) { - s_logger.warn("Agent is disconnected but the host is still up: " + host.getId() + "-" + host.getName()); - if (currentStatus == Status.Disconnected) { + s_logger.warn("Agent is disconnected but the host is still up: " + host.getId() + "-" + host.getName() + + '-' + host.getResourceState()); + if (currentStatus == Status.Disconnected || + (currentStatus == Status.Up && host.getResourceState() == ResourceState.PrepareForMaintenance)) { if ((System.currentTimeMillis() >> 10) - host.getLastPinged() > AlertWait.value()) { s_logger.warn("Host " + host.getId() + " has been disconnected past the wait time it should be disconnected."); event = Status.Event.WaitedTooLong;