[
https://issues.apache.org/jira/browse/HTTPCLIENT-1084?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Webster updated HTTPCLIENT-1084:
---------------------------------------
Attachment: connection_close_fix.patch
> Closing a timed out socket takes the same amount of time as the connection
> took to time out, so the perceived timeout for an application thread is 2 x
> timeout.
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1084
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1084
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Affects Versions: 3.1 Final
> Reporter: Daniel Webster
> Priority: Minor
> Attachments: connection_close_fix.patch
>
>
> Closing a timed out socket takes the same amount of time as the connection
> took to time out, so the perceived timeout for an application thread is 2 x
> timeout.
> For example, say you set the timeout value for a connection using
> HttpConnectionManager connectionManager = new
> MultiThreadedHttpConnectionManager();
> HttpConnectionManagerParams params = connectionManager.getParams();
> if(params == null){
> params = new HttpConnectionManagerParams();
> }
>
> params.setParameter(HttpConnectionManagerParams.SO_TIMEOUT,
> socketTimeout);
> params.setParameter(HttpConnectionManagerParams.CONNECTION_TIMEOUT,
> connectionTimeout);
> connectionManager.setParams(params);
> return connectionManager;
> If the client attempts to open a connection to a server and requests data,
> and the server fails to respond for 10 seconds, the HttpClient will actually
> throw a timeout exception to code using HttpClient after 20 seconds (2x10).
> The call pattern seems to be
> after 10 seconds, a ConnectionTimeoutException is thrown inside
> org.apache.commons.httpclient.HttpConnection.open(). The open() method then
> catches that exception (line 748) and calls closeSocketAndStreams() (on line
> 751). The closeSocketAndStream() method then takes another "timeout" seconds.
> This time is consumed when closing the output stream (lines 1222-1231).
> To fix this problem on our project, we switched the ordering of the socket
> shutdown and the stream shutdown (as shown in the attached patch).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]