You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2021/08/23 20:15:07 UTC
[httpcomponents-client] branch 4.5.x updated: Don't retry a request
for NoRouteToHostException
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch 4.5.x
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
The following commit(s) were added to refs/heads/4.5.x by this push:
new f0618b0 Don't retry a request for NoRouteToHostException
f0618b0 is described below
commit f0618b0484569752de96ea071551d00869146b92
Author: Jaikiran Pai <ja...@gmail.com>
AuthorDate: Sun Aug 22 19:17:57 2021 +0530
Don't retry a request for NoRouteToHostException
---
.../impl/client/DefaultHttpRequestRetryHandler.java | 2 ++
.../client/TestDefaultHttpRequestRetryHandler.java | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java b/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java
index 7ac2890..a9495d9 100644
--- a/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java
+++ b/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java
@@ -30,6 +30,7 @@ package org.apache.http.impl.client;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.ConnectException;
+import java.net.NoRouteToHostException;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Collection;
@@ -103,6 +104,7 @@ public class DefaultHttpRequestRetryHandler implements HttpRequestRetryHandler {
InterruptedIOException.class,
UnknownHostException.class,
ConnectException.class,
+ NoRouteToHostException.class,
SSLException.class));
}
diff --git a/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java b/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java
index baec3be..59092e0 100644
--- a/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java
+++ b/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.IOException;
+import java.net.NoRouteToHostException;
import java.net.UnknownHostException;
import org.apache.http.client.methods.HttpUriRequest;
@@ -111,4 +112,21 @@ public class TestDefaultHttpRequestRetryHandler {
Assert.assertFalse(retryHandler.retryRequest(new ConnectTimeoutException(),3,context));
}
+ /**
+ * Test that {@link DefaultHttpRequestRetryHandler} doesn't retry a request
+ * when {@link java.net.NoRouteToHostException} is thrown when establishing
+ * a connection
+ */
+ @Test
+ public void noRetryForNoRouteToHostException() {
+ final HttpContext context = mock(HttpContext.class);
+ final HttpUriRequest request = mock(HttpUriRequest.class);
+ when(request.isAborted()).thenReturn(false);
+ when(context.getAttribute(HttpCoreContext.HTTP_REQUEST)).thenReturn(request);
+
+ final DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler();
+ Assert.assertFalse("Request was unexpectedly retried for "
+ + NoRouteToHostException.class.getName() + " exception",
+ retryHandler.retryRequest(new NoRouteToHostException(), 1, context));
+ }
}