From 468136be746a427d760254645dcea5bbc33fbadf Mon Sep 17 00:00:00 2001 From: anthony Date: Mon, 27 Jun 2011 13:41:50 -0700 Subject: [PATCH] bug 9855: two fixes. 1. can not cancel maintenace mode. 2. maintenance related modes are preserved through MS restart status 9855: resolved fixed --- .../cloud/agent/manager/AgentManagerImpl.java | 2 +- .../com/cloud/agent/manager/AgentMonitor.java | 6 ------ .../src/com/cloud/host/dao/HostDaoImpl.java | 20 ++++++++++++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 68d17a711db..77bb79d214a 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -993,7 +993,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { } final Status currentState = host.getStatus(); - if (currentState == Status.Down || currentState == Status.Alert || currentState == Status.Removed || currentState == Status.PrepareForMaintenance) { + if (currentState == Status.Down || currentState == Status.Alert || currentState == Status.Removed) { if (s_logger.isDebugEnabled()) { s_logger.debug("Host " + hostId + " is already " + currentState.toString()); } diff --git a/server/src/com/cloud/agent/manager/AgentMonitor.java b/server/src/com/cloud/agent/manager/AgentMonitor.java index 3e5a134735f..c439b6fb60e 100755 --- a/server/src/com/cloud/agent/manager/AgentMonitor.java +++ b/server/src/com/cloud/agent/manager/AgentMonitor.java @@ -72,12 +72,6 @@ public class AgentMonitor extends Thread implements Listener { public void run() { s_logger.info("Agent Monitor is started."); -// _agentMgr.startDirectlyConnectedHosts(); - try { - Thread.sleep(_pingTimeout * 2000); - } catch (InterruptedException e) { - s_logger.info("Woke me up so early!"); - } while (!_stop) { try { // check every 60 seconds diff --git a/server/src/com/cloud/host/dao/HostDaoImpl.java b/server/src/com/cloud/host/dao/HostDaoImpl.java index 4901cf5f503..284aecfe6c4 100644 --- a/server/src/com/cloud/host/dao/HostDaoImpl.java +++ b/server/src/com/cloud/host/dao/HostDaoImpl.java @@ -137,7 +137,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao MsStatusSearch = createSearchBuilder(); MsStatusSearch.and("ms", MsStatusSearch.entity().getManagementServerId(), SearchCriteria.Op.EQ); - MsStatusSearch.and("statuses", MsStatusSearch.entity().getStatus(), SearchCriteria.Op.IN); + MsStatusSearch.and("statuses", MsStatusSearch.entity().getStatus(), SearchCriteria.Op.NIN); MsStatusSearch.done(); TypeDcSearch = createSearchBuilder(); @@ -224,6 +224,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao UnmanagedDirectConnectSearch.and("resource", UnmanagedDirectConnectSearch.entity().getResource(), SearchCriteria.Op.NNULL); UnmanagedDirectConnectSearch.and("server", UnmanagedDirectConnectSearch.entity().getManagementServerId(), SearchCriteria.Op.NULL); UnmanagedDirectConnectSearch.and("lastPinged", UnmanagedDirectConnectSearch.entity().getLastPinged(), SearchCriteria.Op.LTEQ); + UnmanagedDirectConnectSearch.and("statuses", UnmanagedDirectConnectSearch.entity().getStatus(), SearchCriteria.Op.NIN); /* * UnmanagedDirectConnectSearch.op(SearchCriteria.Op.OR, "managementServerId", * UnmanagedDirectConnectSearch.entity().getManagementServerId(), SearchCriteria.Op.EQ); @@ -367,24 +368,33 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao public List findDirectAgentToLoad(long lastPingSecondsAfter, Long limit) { SearchCriteria sc = UnmanagedDirectConnectSearch.create(); sc.setParameters("lastPinged", lastPingSecondsAfter); - + sc.setParameters("statuses", Status.ErrorInMaintenance, Status.Maintenance, Status.PrepareForMaintenance); return search(sc, new Filter(HostVO.class, "clusterId", true, 0L, limit)); } @Override public void markHostsAsDisconnected(long msId) { SearchCriteria sc = MsStatusSearch.create(); - sc.setParameters("ms", msId); + sc.setParameters("ms", msId); + sc.setParameters("statuses", Status.ErrorInMaintenance, Status.Maintenance, Status.PrepareForMaintenance); HostVO host = createForUpdate(); - host.setManagementServerId(null); host.setLastPinged((System.currentTimeMillis() >> 10) - (10 * 60)); host.setDisconnectedOn(new Date()); - UpdateBuilder ub = getUpdateBuilder(host); ub.set(host, "status", Status.Disconnected); update(ub, sc, null); + + sc = MsStatusSearch.create(); + sc.setParameters("ms", msId); + + host = createForUpdate(); + host.setManagementServerId(null); + host.setLastPinged((System.currentTimeMillis() >> 10) - (10 * 60)); + host.setDisconnectedOn(new Date()); + ub = getUpdateBuilder(host); + update(ub, sc, null); } @Override