Oscar created HTTPCLIENT-2326:
---------------------------------
Summary: Support any Exception in RetryStrategy
Key: HTTPCLIENT-2326
URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2326
Project: HttpComponents HttpClient
Issue Type: Improvement
Reporter: Oscar
It would be useful to modify {{HttpRequestRetryExec}} to allow
{{HttpRequestRetryStrategy}} to support all kind of exceptions, not only those
extending {{{}IOException{}}}.
I would like HttpClient to retry requests when facing a
[TunnelRefusedException|https://hc.apache.org/httpcomponents-client-5.1.x/current/httpclient5/apidocs/org/apache/hc/client5/http/impl/TunnelRefusedException.html]
(it happens randomly that the proxy refuses the initial connection, but it
usually works ok when retrying).
I have tried extending
[DefaultHttpRequestRetryStrategy|https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/main/java/org/apache/hc/client5/http/impl/DefaultHttpRequestRetryStrategy.java]
but it can only capture exceptions inheriting from {{IOException.}}
So, maybe {{HttpRequestRetryStrategy}} interface should support any kind of
{{Exception }} or maybe {{TunnelRefusedException}} should be an {{IOException}}
This is an example of a stacktrace that I would like to retry:
{code:java}
org.apache.hc.client5.http.ClientProtocolException: CONNECT refused by proxy:
HTTP/1.1 500 Internal Server Error
at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:173)
at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
[...]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.apache.hc.client5.http.impl.TunnelRefusedException: CONNECT
refused by proxy: HTTP/1.1 500 Internal Server Error
at
org.apache.hc.client5.http.impl.classic.ConnectExec.createTunnelToTarget(ConnectExec.java:284)
at
org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:151)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170){code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]