CLOUDSTACK-7184 retry-wait loop config to deal with network glitches
(cherry picked from commit a29f954a269c992307f0410df88ca4ac7a0b82a0)
Conflicts:
engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7f440854
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7f440854
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7f440854
Branch: refs/heads/master
Commit: 7f440854f7bcd41a1bd6581c0239cde2e98261b7
Parents: 6e1e56d
Author: Daan Hoogland <[email protected]>
Authored: Tue Sep 16 12:20:30 2014 +0200
Committer: Daan Hoogland <[email protected]>
Committed: Thu Sep 18 12:55:05 2014 +0200
----------------------------------------------------------------------
.../com/cloud/agent/manager/DirectAgentAttache.java | 14 ++++++++++++--
.../xenserver/resource/CitrixResourceBase.java | 2 +-
2 files changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f440854/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java
----------------------------------------------------------------------
diff --git
a/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java
b/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java
index fa89841..6cfe01f 100755
--- a/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java
+++ b/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java
@@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.log4j.Logger;
-
+import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
import com.cloud.agent.api.Answer;
@@ -41,6 +41,10 @@ import com.cloud.resource.ServerResource;
public class DirectAgentAttache extends AgentAttache {
private final static Logger s_logger =
Logger.getLogger(DirectAgentAttache.class);
+ protected final ConfigKey<Integer> _HostPingRetryCount = new
ConfigKey<Integer>("Advanced", Integer.class, "host.ping.retry.count", "0",
+ "Number of times retrying a host ping while waiting for check
results", true);
+ protected final ConfigKey<Integer> _HostPingRetryTimer = new
ConfigKey<Integer>("Advanced", Integer.class, "host.ping.retry.timer", "5",
+ "Interval to wait before retrying a host ping while waiting for
check results", true);
ServerResource _resource;
List<ScheduledFuture<?>> _futures = new ArrayList<ScheduledFuture<?>>();
AgentManagerImpl _mgr;
@@ -162,7 +166,13 @@ public class DirectAgentAttache extends AgentAttache {
ServerResource resource = _resource;
if (resource != null) {
- PingCommand cmd = resource.getCurrentStatus(_id);
+ PingCommand cmd = null;
+ int retried = 0;
+ while ( cmd == null && ++retried <
_HostPingRetryCount.value())
+ {
+ cmd = resource.getCurrentStatus(_id);
+ Thread.sleep(1000*_HostPingRetryTimer.value());
+ }
if (cmd == null) {
s_logger.warn("Unable to get current status on " + _id
+ "(" + _name + ")");
return;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f440854/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git
a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index f5a2ea4..07b6f7f 100644
---
a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++
b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -4170,7 +4170,7 @@ public abstract class CitrixResourceBase implements
ServerResource, HypervisorRe
if (!pingXAPI()) {
Thread.sleep(1000);
if (!pingXAPI()) {
- s_logger.warn(" can not ping xenserver " + _host.uuid);
+ s_logger.warn("can not ping xenserver " + _host.uuid);
return null;
}
}