diff --git a/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java b/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java index fa89841c749..6cfe01f6a00 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 _HostPingRetryCount = new ConfigKey("Advanced", Integer.class, "host.ping.retry.count", "0", + "Number of times retrying a host ping while waiting for check results", true); + protected final ConfigKey _HostPingRetryTimer = new ConfigKey("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> _futures = new ArrayList>(); 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; 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 f5a2ea43802..07b6f7fdcb2 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; } }