You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2014/09/15 17:41:42 UTC
git commit: updated refs/heads/hotfix/4.4/CLOUDSTACK-7184 to b0641a7
Repository: cloudstack
Updated Branches:
refs/heads/hotfix/4.4/CLOUDSTACK-7184 f497fceab -> b0641a7d2
CLOUDSTACK-7184 timeout configuration value for host check
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b0641a7d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b0641a7d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b0641a7d
Branch: refs/heads/hotfix/4.4/CLOUDSTACK-7184
Commit: b0641a7d279734970577a3a87940abd030a6a8c2
Parents: f497fce
Author: Daan Hoogland <dh...@schubergphilis.com>
Authored: Mon Sep 15 17:41:01 2014 +0200
Committer: Daan Hoogland <da...@onecht.net>
Committed: Mon Sep 15 17:41:01 2014 +0200
----------------------------------------------------------------------
api/src/com/cloud/ha/Investigator.java | 5 +++--
core/src/com/cloud/agent/api/CheckOnHostCommand.java | 8 ++++++--
.../cloudstack/api/agent/test/CheckOnHostCommandTest.java | 2 +-
.../hyperv/src/com/cloud/ha/HypervInvestigator.java | 8 ++++----
.../hypervisors/kvm/src/com/cloud/ha/KVMInvestigator.java | 8 ++++----
.../simulator/src/com/cloud/ha/SimulatorInvestigator.java | 6 +++---
.../vmware/src/com/cloud/ha/VmwareInvestigator.java | 4 ++--
server/src/com/cloud/configuration/Config.java | 1 +
server/src/com/cloud/ha/CheckOnAgentInvestigator.java | 4 ++--
server/src/com/cloud/ha/HighAvailabilityManagerImpl.java | 8 ++++++--
.../src/com/cloud/ha/ManagementIPSystemVMInvestigator.java | 4 ++--
server/src/com/cloud/ha/UserVmDomRInvestigator.java | 4 ++--
server/src/com/cloud/ha/XenServerInvestigator.java | 8 ++++----
13 files changed, 40 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/api/src/com/cloud/ha/Investigator.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/ha/Investigator.java b/api/src/com/cloud/ha/Investigator.java
index 7dd8b3f..e5b8609 100644
--- a/api/src/com/cloud/ha/Investigator.java
+++ b/api/src/com/cloud/ha/Investigator.java
@@ -26,8 +26,9 @@ public interface Investigator extends Adapter {
* Returns if the vm is still alive.
*
* @param vm to work on.
+ * @param wait TODO
*/
- public Boolean isVmAlive(VirtualMachine vm, Host host);
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait);
- public Status isAgentAlive(Host agent);
+ public Status isAgentAlive(Host agent, int wait);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/core/src/com/cloud/agent/api/CheckOnHostCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/CheckOnHostCommand.java b/core/src/com/cloud/agent/api/CheckOnHostCommand.java
index be05bd4..8229bc3 100644
--- a/core/src/com/cloud/agent/api/CheckOnHostCommand.java
+++ b/core/src/com/cloud/agent/api/CheckOnHostCommand.java
@@ -25,9 +25,13 @@ public class CheckOnHostCommand extends Command {
protected CheckOnHostCommand() {
}
- public CheckOnHostCommand(Host host) {
+ protected CheckOnHostCommand(Host host) {
+ this(host,20);
+ }
+
+ public CheckOnHostCommand(Host host, int wait) {
this.host = new HostTO(host);
- setWait(20);
+ setWait(wait);
}
public HostTO getHost() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/core/test/org/apache/cloudstack/api/agent/test/CheckOnHostCommandTest.java
----------------------------------------------------------------------
diff --git a/core/test/org/apache/cloudstack/api/agent/test/CheckOnHostCommandTest.java b/core/test/org/apache/cloudstack/api/agent/test/CheckOnHostCommandTest.java
index 9edbf10..c220268 100644
--- a/core/test/org/apache/cloudstack/api/agent/test/CheckOnHostCommandTest.java
+++ b/core/test/org/apache/cloudstack/api/agent/test/CheckOnHostCommandTest.java
@@ -257,7 +257,7 @@ public class CheckOnHostCommandTest {
};
};
- CheckOnHostCommand cohc = new CheckOnHostCommand(host);
+ CheckOnHostCommand cohc = new CheckOnHostCommand(host,20);
@Test
public void testGetHost() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/plugins/hypervisors/hyperv/src/com/cloud/ha/HypervInvestigator.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/ha/HypervInvestigator.java b/plugins/hypervisors/hyperv/src/com/cloud/ha/HypervInvestigator.java
index 01d75fa..3ff2aba 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/ha/HypervInvestigator.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/ha/HypervInvestigator.java
@@ -42,8 +42,8 @@ public class HypervInvestigator extends AdapterBase implements Investigator {
@Inject ResourceManager _resourceMgr;
@Override
- public Boolean isVmAlive(com.cloud.vm.VirtualMachine vm, Host host) {
- Status status = isAgentAlive(host);
+ public Boolean isVmAlive(com.cloud.vm.VirtualMachine vm, Host host, int wait) {
+ Status status = isAgentAlive(host, wait);
if (status == null) {
return false;
}
@@ -51,11 +51,11 @@ public class HypervInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
if (agent.getHypervisorType() != Hypervisor.HypervisorType.Hyperv) {
return null;
}
- CheckOnHostCommand cmd = new CheckOnHostCommand(agent);
+ CheckOnHostCommand cmd = new CheckOnHostCommand(agent, wait);
List<HostVO> neighbors = _resourceMgr.listHostsInClusterByStatus(agent.getClusterId(), Status.Up);
for (HostVO neighbor : neighbors) {
if (neighbor.getId() == agent.getId() || neighbor.getHypervisorType() != Hypervisor.HypervisorType.Hyperv) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/plugins/hypervisors/kvm/src/com/cloud/ha/KVMInvestigator.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/ha/KVMInvestigator.java b/plugins/hypervisors/kvm/src/com/cloud/ha/KVMInvestigator.java
index 184053b..c21bad9 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/ha/KVMInvestigator.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/ha/KVMInvestigator.java
@@ -47,8 +47,8 @@ public class KVMInvestigator extends AdapterBase implements Investigator {
ResourceManager _resourceMgr;
@Override
- public Boolean isVmAlive(com.cloud.vm.VirtualMachine vm, Host host) {
- Status status = isAgentAlive(host);
+ public Boolean isVmAlive(com.cloud.vm.VirtualMachine vm, Host host, int wait) {
+ Status status = isAgentAlive(host, wait);
if (status == null) {
return null;
}
@@ -56,11 +56,11 @@ public class KVMInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
if (agent.getHypervisorType() != Hypervisor.HypervisorType.KVM) {
return null;
}
- CheckOnHostCommand cmd = new CheckOnHostCommand(agent);
+ CheckOnHostCommand cmd = new CheckOnHostCommand(agent, wait);
List<HostVO> neighbors = _resourceMgr.listHostsInClusterByStatus(agent.getClusterId(), Status.Up);
for (HostVO neighbor : neighbors) {
if (neighbor.getId() == agent.getId() || neighbor.getHypervisorType() != Hypervisor.HypervisorType.KVM) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/plugins/hypervisors/simulator/src/com/cloud/ha/SimulatorInvestigator.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/ha/SimulatorInvestigator.java b/plugins/hypervisors/simulator/src/com/cloud/ha/SimulatorInvestigator.java
index 448d7ed..af13f82 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/ha/SimulatorInvestigator.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/ha/SimulatorInvestigator.java
@@ -55,12 +55,12 @@ public class SimulatorInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
if (agent.getHypervisorType() != HypervisorType.Simulator) {
return null;
}
- CheckOnHostCommand cmd = new CheckOnHostCommand(agent);
+ CheckOnHostCommand cmd = new CheckOnHostCommand(agent, wait);
List<HostVO> neighbors = _resourceMgr.listHostsInClusterByStatus(agent.getClusterId(), Status.Up);
for (HostVO neighbor : neighbors) {
if (neighbor.getId() == agent.getId() || neighbor.getHypervisorType() != Hypervisor.HypervisorType.Simulator) {
@@ -80,7 +80,7 @@ public class SimulatorInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Boolean isVmAlive(VirtualMachine vm, Host host) {
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait) {
CheckVirtualMachineCommand cmd = new CheckVirtualMachineCommand(vm.getInstanceName());
try {
Answer answer = _agentMgr.send(vm.getHostId(), cmd);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/plugins/hypervisors/vmware/src/com/cloud/ha/VmwareInvestigator.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/ha/VmwareInvestigator.java b/plugins/hypervisors/vmware/src/com/cloud/ha/VmwareInvestigator.java
index 7042d53..c04d431 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/ha/VmwareInvestigator.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/ha/VmwareInvestigator.java
@@ -30,7 +30,7 @@ public class VmwareInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
if (agent.getHypervisorType() == HypervisorType.VMware)
return Status.Disconnected;
@@ -38,7 +38,7 @@ public class VmwareInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Boolean isVmAlive(VirtualMachine vm, Host host) {
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait) {
if (vm.getHypervisorType() == HypervisorType.VMware)
return true;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/server/src/com/cloud/configuration/Config.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java
index 56ae5f9..d202e61 100755
--- a/server/src/com/cloud/configuration/Config.java
+++ b/server/src/com/cloud/configuration/Config.java
@@ -597,6 +597,7 @@ public enum Config {
"The interval (in milliseconds) when host stats are retrieved from agents.",
null),
HostRetry("Advanced", AgentManager.class, Integer.class, "host.retry", "2", "Number of times to retry hosts for creating a volume", null),
+ HostPingTimeout("Advanced", HighAvailabilityManager.class, Integer.class, "host.ping.timeout", "60", "Interval to wait untill a host is considdered down while waiting for check results", null),
IntegrationAPIPort("Advanced", ManagementServer.class, Integer.class, "integration.api.port", null, "Default API port", null),
InvestigateRetryInterval(
"Advanced",
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/CheckOnAgentInvestigator.java b/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
index 1dfe8c0..27fed59 100644
--- a/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
+++ b/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
@@ -42,12 +42,12 @@ public class CheckOnAgentInvestigator extends AdapterBase implements Investigato
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
return null;
}
@Override
- public Boolean isVmAlive(VirtualMachine vm, Host host) {
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait) {
CheckVirtualMachineCommand cmd = new CheckVirtualMachineCommand(vm.getInstanceName());
try {
CheckVirtualMachineAnswer answer = (CheckVirtualMachineAnswer)_agentMgr.send(vm.getHostId(), cmd);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
index 1318d9b..12caae2 100755
--- a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
@@ -187,6 +187,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
int _stopRetryInterval;
int _investigateRetryInterval;
int _migrateRetryInterval;
+ int _waitTimeout;
int _restartRetryInterval;
int _maxRetries;
@@ -207,7 +208,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
Status hostState = null;
for (Investigator investigator : investigators) {
- hostState = investigator.isAgentAlive(host);
+ hostState = investigator.isAgentAlive(host, _waitTimeout);
if (hostState != null) {
if (s_logger.isDebugEnabled()) {
s_logger.debug(investigator.getName() + " was able to determine host " + hostId + " is in " + hostState.toString());
@@ -479,7 +480,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
Investigator investigator = null;
for (Investigator it : investigators) {
investigator = it;
- alive = investigator.isVmAlive(vm, host);
+ alive = investigator.isVmAlive(vm, host, 20);
s_logger.info(investigator.getName() + " found " + vm + "to be alive? " + alive);
if (alive != null) {
break;
@@ -792,6 +793,9 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
value = params.get("migrate.retry.interval");
_migrateRetryInterval = NumbersUtil.parseInt(value, 2 * 60);
+ value = params.get("host.ping.timeout");
+ _waitTimeout = NumbersUtil.parseInt(value, 60);
+
_instance = params.get("instance");
if (_instance == null) {
_instance = "VMOPS";
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java b/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
index 95e803f..53ff4e6 100644
--- a/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
+++ b/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
@@ -42,7 +42,7 @@ public class ManagementIPSystemVMInvestigator extends AbstractInvestigatorImpl {
private final NetworkModel _networkMgr = null;
@Override
- public Boolean isVmAlive(VirtualMachine vm, Host host) {
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait) {
if (!vm.getType().isUsedBySystem()) {
s_logger.debug("Not a System Vm, unable to determine state of " + vm + " returning null");
}
@@ -109,7 +109,7 @@ public class ManagementIPSystemVMInvestigator extends AbstractInvestigatorImpl {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
return null;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/server/src/com/cloud/ha/UserVmDomRInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/UserVmDomRInvestigator.java b/server/src/com/cloud/ha/UserVmDomRInvestigator.java
index d6f7279..6fea432 100644
--- a/server/src/com/cloud/ha/UserVmDomRInvestigator.java
+++ b/server/src/com/cloud/ha/UserVmDomRInvestigator.java
@@ -53,7 +53,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
private final VpcVirtualNetworkApplianceManager _vnaMgr = null;
@Override
- public Boolean isVmAlive(VirtualMachine vm, Host host) {
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait) {
if (vm.getType() != VirtualMachine.Type.User) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Not a User Vm, unable to determine state of " + vm + " returning null");
@@ -104,7 +104,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("checking if agent (" + agent.getId() + ") is alive");
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0641a7d/server/src/com/cloud/ha/XenServerInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/XenServerInvestigator.java b/server/src/com/cloud/ha/XenServerInvestigator.java
index 8ea27dc..09b7905 100755
--- a/server/src/com/cloud/ha/XenServerInvestigator.java
+++ b/server/src/com/cloud/ha/XenServerInvestigator.java
@@ -50,12 +50,12 @@ public class XenServerInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Status isAgentAlive(Host agent) {
+ public Status isAgentAlive(Host agent, int wait) {
if (agent.getHypervisorType() != HypervisorType.XenServer) {
return null;
}
- CheckOnHostCommand cmd = new CheckOnHostCommand(agent);
+ CheckOnHostCommand cmd = new CheckOnHostCommand(agent, wait);
List<HostVO> neighbors = _resourceMgr.listAllHostsInCluster(agent.getClusterId());
for (HostVO neighbor : neighbors) {
if (neighbor.getId() == agent.getId() || neighbor.getHypervisorType() != HypervisorType.XenServer) {
@@ -76,8 +76,8 @@ public class XenServerInvestigator extends AdapterBase implements Investigator {
}
@Override
- public Boolean isVmAlive(VirtualMachine vm, Host host) {
- Status status = isAgentAlive(host);
+ public Boolean isVmAlive(VirtualMachine vm, Host host, int wait) {
+ Status status = isAgentAlive(host, wait);
if (status == null) {
return null;
}