From 78e095e64b2344a49e96a7939ca6edd3b36d93dd Mon Sep 17 00:00:00 2001 From: Remi Bergsma Date: Wed, 29 Apr 2015 14:14:14 -0400 Subject: [PATCH] return a state instead of null When a full cluster is down or unreachable, CloudStack currently reports everything the same as the last known state, which is usually Up. When it cannot reach a host and cannot reach another host in the same cluster either, it returns null and says "I don't know". This prevents it from reporting the problem. Now, we return an Alert or Disconnected state so proper action can be taken. Also logging was added, so we know what part of the code put it to Alert or Disconnected. --- .../com/cloud/ha/AbstractInvestigatorImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/ha/AbstractInvestigatorImpl.java b/server/src/com/cloud/ha/AbstractInvestigatorImpl.java index bb37c05e7be..b222386bcb7 100644 --- a/server/src/com/cloud/ha/AbstractInvestigatorImpl.java +++ b/server/src/com/cloud/ha/AbstractInvestigatorImpl.java @@ -92,7 +92,7 @@ public abstract class AbstractInvestigatorImpl extends AdapterBase implements In if (s_logger.isDebugEnabled()) { s_logger.debug("host (" + testHostIp + ") returns null answer"); } - return null; + return Status.Alert; } if (pingTestAnswer.getResult()) { @@ -103,14 +103,20 @@ public abstract class AbstractInvestigatorImpl extends AdapterBase implements In return Status.Up; } else { if (s_logger.isDebugEnabled()) { - s_logger.debug("host (" + testHostIp + ") cannot be pinged, returning null ('I don't know')"); + s_logger.debug("host (" + testHostIp + ") cannot be pinged, returning Alert state"); } - return null; + return Status.Alert; } } catch (AgentUnavailableException e) { - return null; + if (s_logger.isDebugEnabled()) { + s_logger.debug("host (" + testHostIp + "): " + e.getLocalizedMessage() + ", returning Disconnected state"); + } + return Status.Disconnected; } catch (OperationTimedoutException e) { - return null; + if (s_logger.isDebugEnabled()) { + s_logger.debug("host (" + testHostIp + "): " + e.getLocalizedMessage() + ", returning Alert state"); + } + return Status.Alert; } } }