[
https://issues.apache.org/jira/browse/HTTPCLIENT-2314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17803639#comment-17803639
]
Oleg Kalnichevski commented on HTTPCLIENT-2314:
-----------------------------------------------
> well in this particular case I am not reusing an {{HttpClient}} heavily but
> instead create new ones when I need them.
[~phax] Well, there appears to be a race condition in your code that leads to
execution of requests with an HttpClient instance whose connection pool has
already been shut down.
Instead of throwing away a perfectly valid HttpClient along with its pool you
would be better off just flushing all persistent connections from the pool
instead.
> Did you add some ThreadLocal or so?
No, I did not. ThreadLocal can be very evil. We use them extremely sparingly .
Oleg
> IllegalStateException: Endpoint is not connected
> ------------------------------------------------
>
> Key: HTTPCLIENT-2314
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2314
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient (classic)
> Affects Versions: 5.2, 5.3
> Reporter: Philip Helger
> Priority: Major
> Attachments: debuglog-httpclient-2314.txt
>
>
> Using `PoolingHttpClientConnectionManager`, under high traffic situations it
> occurs consistently that the exception "Endpoint is not connected" is invoked.
>
> The full stacktrace looks like this:
> {{Caused by: java.lang.IllegalStateException: Endpoint is not connected}}
> {{ at org.apache.hc.core5.util.Asserts.check(Asserts.java:38)
> ~[httpcore5-5.2.4.jar:5.2.4]}}
> {{ at
> org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager$InternalConnectionEndpoint.getValidatedPoolEntry(PoolingHttpClientConnectionManager.java:664)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager$InternalConnectionEndpoint.setSocketTimeout(PoolingHttpClientConnectionManager.java:697)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.InternalExecRuntime.execute(InternalExecRuntime.java:211)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.MainClientExec.execute(MainClientExec.java:116)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:188)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:113)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:116)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
> ~[httpclient5-5.3.jar:5.3]}}
> {{ at
> org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
> ~[httpclient5-5.3.jar:5.3]}}
>
> Unfortunately I don't have a standalone example to reproduce it.
> Any suggestions for a workaround????
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]