[
https://issues.apache.org/jira/browse/HTTPCLIENT-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCLIENT-1610.
-------------------------------------------
Resolution: Duplicate
Fix Version/s: 4.4.1
Fixed by HTTPCLIENT-1609. Please re-test with the latest SVN snapshot.
Oleg
> Stale connections in pool cause NoHttpResponseException
> -------------------------------------------------------
>
> Key: HTTPCLIENT-1610
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1610
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Affects Versions: 4.4 Final
> Reporter: Oliver Henlich
> Fix For: 4.4.1
>
>
> Hi,
> A few days ago we upgraded from httpclient 4.3.6 to 4.4.
> Our application sends out webservice requests to various other servers hosted
> at our customers sites.
> We noticed that a lot of these requests were failing with the following
> NoHttpResponseException exception. Unfortunately these exceptions seemed to
> be occurring intermittently.
> On further experimentation we were able to reproduce it more reliably by
> waiting 1 minute between sending requests to the same url. This leads us to
> believe that this is potential issue with the connection pooling/re-use when
> the remote servers close/kill the connection.
> We tried but failed to create a reproducible test case to attach to this
> request.
> Notes:
> 1. CPool which is used by the default PoolingHttpClientConnectionManager does
> not override/implement validate(). Is this correct?
> 2. We noticed that since 4.4 the StaleConnectionCheck has been disabled by
> default (ClientConfiguration.java) as part of
> https://issues.apache.org/jira/browse/HTTPCLIENT-1493.
> Questions:
> 1. Is something obvious we've missed in the configuration (shown below)? How
> do we avoid stale connections resulting in NoHttpResponseExceptions.
> 2. Would it make sense to switch to the BasicHttpClientConnectionManager to
> avoid these issues. Especially since our usage of httpclient does not seem to
> require connections to be re-used in this manner.
> Cheers
> Oliver
> Configuration:
> {code}
> public CloseableHttpClient buildRegularClient() {
> SSLContext sslContext = createSSLContext();
> RequestConfig globalConfig = RequestConfig.custom()
> .setCookieSpec(CookieSpecs.IGNORE_COOKIES) // By default we
> always want to ignore cookies
> .setSocketTimeout(getReadTimeout())
> .setConnectTimeout(getConnectTimeout())
> .build();
> HttpClientBuilder httpClientBuilder = HttpClients.custom()
> .setDefaultRequestConfig(globalConfig)
> .setMaxConnTotal(MAX_CONNECTIONS)
> .setMaxConnPerRoute(MAX_CONNECTIONS_PER_ROUTE);
> httpClientBuilder.addInterceptorFirst(new
> RemoveSoapHeadersInterceptor());
> httpClientBuilder.setSslcontext(sslContext);
> httpClientBuilder.setHostnameVerifier(getHostnameVerifier());
> return httpClientBuilder.build();
> }
> {code}
> Exception:
> {noformat}
> Caused by: org.apache.http.NoHttpResponseException: server.name.com:8080
> failed to respond
> at
> org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:143)
> at
> org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
> at
> org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:260)
> at
> org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:161)
> at
> org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:153)
> at
> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:271)
> at
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
> at
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:254)
> at
> org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
> at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
> at
> org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
> at
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]