/** * Perform the REST operation and retry in case of exceptions. */ @Override public <T extends JestResult> T execute(Action<T> clientRequest) throws IOException { // 'strict-timeout' will enforce that the timeout time elapses between subsequent // attempts even if the operation returns more quickly than the timeout Map<String,Object> params = new HashMap<>(); params.put("strict-timeout", Boolean.TRUE); TimeoutTracker timeoutTracker = new TimeoutTracker(params, m_retries, m_timeout); for (timeoutTracker.reset(); timeoutTracker.shouldRetry(); timeoutTracker.nextAttempt()) { timeoutTracker.startAttempt(); try { return m_delegate.execute(clientRequest); } catch (Exception e) { LOG.warn("Exception while trying to execute REST operation (attempt {})", timeoutTracker.getAttempt() + 1, e); } } return null; }
public double elapsedTimeInMillis() { return m_tracker.elapsedTimeInMillis(); } }
private void connect() throws IOException, SocketException { m_httpSocket = new Socket(); m_httpSocket.connect(new InetSocketAddress(m_addr, m_currentPort), m_timeoutTracker.getConnectionTimeout()); m_serviceStatus = PollStatus.SERVICE_UNRESPONSIVE; m_httpSocket.setSoTimeout(m_timeoutTracker.getSoTimeout()); m_httpSocket = getSocketWrapper().wrapSocket(m_httpSocket); }
public void connect(final InetAddress address, final int port, final int timeout) throws Exception { Map<String,?> emptyMap = Collections.emptyMap(); TimeoutTracker tracker = new TimeoutTracker(emptyMap, SshClient.DEFAULT_RETRY, timeout); PollStatus ps = PollStatus.unavailable(); Ssh ssh = new Ssh(address, port, tracker.getConnectionTimeout()); ssh.setClientBanner(clientBanner); for (tracker.reset(); tracker.shouldRetry() && !ps.isAvailable(); tracker.nextAttempt()) { try { ps = ssh.poll(tracker);
String reason = null; final TimeoutTracker tracker = new TimeoutTracker(parameters, DEFAULT_RETRY, DEFAULT_TIMEOUT); LDAPConnection lc = new LDAPConnection(new TimeoutLDAPSocket(tracker.getSoTimeout())); for (tracker.reset(); tracker.shouldRetry() && !(serviceStatus == PollStatus.SERVICE_AVAILABLE); tracker.nextAttempt()) { LOG.debug("polling LDAP on {}, {}", address, tracker); tracker.startAttempt(); try { lc.connect(address, ldapPort); lc.bind(ldapVersion, ldapDn, password.getBytes()); LOG.debug("bound to LDAP server version {} with distinguished name {}", ldapVersion, ldapDn); LOG.debug("poll: responseTime= {}ms", tracker.elapsedTimeInMillis()); } catch (LDAPException e) { try { LDAPSearchResults results = null; int msLimit = (int)tracker.getTimeoutInMillis(); int serverLimit = (int)tracker.getTimeoutInSeconds() + 1; LDAPSearchConstraints cons = new LDAPSearchConstraints(msLimit, serverLimit, responseTime = tracker.elapsedTimeInMillis(); LOG.debug("search yielded {} result(s)", results.getCount()); serviceStatus = PollStatus.SERVICE_AVAILABLE;
TimeoutTracker timeoutTracker = new TimeoutTracker(parameters, DEFAULT_RETRY, DEFAULT_TIMEOUT); AmiPeerFactory amiPeerFactory = AmiPeerFactory.getInstance(); AmiAgentConfig amiConfig = amiPeerFactory.getAgentConfig(svc.getAddress()); managerConnection.setSocketTimeout(new Long(timeoutTracker.getTimeoutInMillis()).intValue()); while(timeoutTracker.shouldRetry()) timeoutTracker.nextAttempt(); LOG.debug("{}: Attempt {}", svc.getSvcName(), timeoutTracker.getAttempt()); try
TimeoutTracker tracker = new TimeoutTracker(parameters, agentConfig.getRetries(), agentConfig.getTimeout()); tracker.reset(); tracker.startAttempt(); LOG.debug("poll: SNMPwalk count succeeded, total={} min={} max={}", matchCount, countMin, countMax); if ((countMin <= matchCount) && (matchCount <= countMax)) { status = PollStatus.available(tracker.elapsedTimeInMillis()); } else { String reason = PropertiesUtils.substitute(reasonTemplate, svcParams); svcParams.setProperty("observedValue", getStringValue(result)); if (meetsCriteria(result, operator, operand)) { status = PollStatus.available(tracker.elapsedTimeInMillis()); if ("false".equals(matchstr)) { return status; status = PollStatus.available(tracker.elapsedTimeInMillis()); } else { status = PollStatus.unavailable(PropertiesUtils.substitute(reasonTemplate, svcParams));
/** * <p>poll</p> * * @return a {@link org.opennms.netmgt.poller.PollStatus} object. * @throws org.opennms.netmgt.provision.support.ssh.InsufficientParametersException if any. */ @Override public PollStatus poll() throws InsufficientParametersException { Map<String,?> emptyMap = Collections.emptyMap(); TimeoutTracker tracker = new TimeoutTracker(emptyMap, 1, getTimeout()); return poll(tracker); }
tracker.startAttempt(); final boolean isAvailable = tryConnect(); final double responseTime = tracker.elapsedTimeInMillis();
public boolean shouldRetry() { return m_tracker.shouldRetry(); } public void nextAttempt() {
public void nextAttempt() { m_tracker.nextAttempt(); } public void startAttempt() {
public void reset() { m_tracker.reset(); } public boolean shouldRetry() {
public void startAttempt() { m_tracker.startAttempt(); } public double elapsedTimeInMillis() {
public void connect(final InetAddress address, final int port, final int timeout) throws Exception { Map<String,?> emptyMap = Collections.emptyMap(); TimeoutTracker tracker = new TimeoutTracker(emptyMap, SshClient.DEFAULT_RETRY, timeout); PollStatus ps = PollStatus.unavailable(); Ssh ssh = new Ssh(address, port, tracker.getConnectionTimeout()); ssh.setClientBanner(clientBanner); for (tracker.reset(); tracker.shouldRetry() && !ps.isAvailable(); tracker.nextAttempt()) { try { ps = ssh.poll(tracker);
TimeoutTracker timeoutTracker = new TimeoutTracker(parameters, DEFAULT_RETRY, DEFAULT_TIMEOUT); AmiPeerFactory amiPeerFactory = AmiPeerFactory.getInstance(); AmiAgentConfig amiConfig = amiPeerFactory.getAgentConfig(svc.getAddress()); managerConnection.setSocketTimeout(new Long(timeoutTracker.getTimeoutInMillis()).intValue()); while(timeoutTracker.shouldRetry()) timeoutTracker.nextAttempt(); LOG.debug("{}: Attempt {}", svc.getSvcName(), timeoutTracker.getAttempt()); try
TimeoutTracker tracker = new TimeoutTracker(parameters, agentConfig.getRetries(), agentConfig.getTimeout()); tracker.reset(); tracker.startAttempt(); status = PollStatus.available(tracker.elapsedTimeInMillis());
public SequenceTracker(Map<String, Object> parameterMap, int defaultSequenceRetry, int defaultTimeout) { final Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("retry", getKeyedInteger(parameterMap, "sequence-retry", defaultSequenceRetry)); parameters.put("timeout", getKeyedInteger(parameterMap, "timeout", defaultTimeout)); parameters.put("strict-timeout", getKeyedBoolean(parameterMap, "strict-timeout", false)); m_tracker = new TimeoutTracker(parameters, defaultSequenceRetry, defaultTimeout); } public void reset() {
tracker.startAttempt(); boolean isAvailable = tryConnect(); double responseTime = tracker.elapsedTimeInMillis();
params.put("strict-timeout", Boolean.TRUE); final TimeoutTracker timeoutTracker = new TimeoutTracker(params, retryCount, timeout); for (timeoutTracker.reset(); timeoutTracker.shouldRetry(); timeoutTracker.nextAttempt()) { timeoutTracker.startAttempt(); try { T result = client.execute(clientRequest); if (timeoutTracker.getAttempt() + 1 <= retryCount) { LOG.warn("Exception while trying to execute REST operation (attempt {}/{}). Retrying.", timeoutTracker.getAttempt() + 1, retryCount + 1, exception); } else { throw new IOException("Could not perform request. Tried " + (timeoutTracker.getAttempt() + 1) + " times and gave up", exception);
TimeoutTracker tracker = new TimeoutTracker(parameters, DEFAULT_RETRY, DEFAULT_TIMEOUT); PollStatus ps = PollStatus.unavailable(); Ssh ssh = new Ssh(address, port, tracker.getConnectionTimeout()); ssh.setClientBanner(clientBanner); for (tracker.reset(); tracker.shouldRetry() && !ps.isAvailable(); tracker.nextAttempt()) { try { ps = ssh.poll(tracker);