You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (JIRA)" <ji...@apache.org> on 2018/05/02 13:33:00 UTC

[jira] [Resolved] (HTTPCLIENT-1921) Time out values not correctly used

     [ https://issues.apache.org/jira/browse/HTTPCLIENT-1921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oleg Kalnichevski resolved HTTPCLIENT-1921.
-------------------------------------------
    Resolution: Invalid

bq. The socket time out is the waiting time for the server to return a reply after the connection was established.

This is a very common misconception which leads to a very depressing high frequency of similar issue reports and questions on SO.

Socket timeout represents the maximum period of _inactivity_ between two _consecutive_ IP packets or in terms of java the longest period of _inactivity_ between two _consecutive_ i/o operations.

Oleg 

> Time out values not correctly used
> ----------------------------------
>
>                 Key: HTTPCLIENT-1921
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1921
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>    Affects Versions: 4.5.5
>            Reporter: elise badr
>            Priority: Blocker
>              Labels: SocketTimeout, httpclient, timeout
>
> I was obliged to migrate to httpclient *4.5.5* and httpcore *4.4.9* while i was upgrading to Spring 4.
> I started using the following configuration to set my time out values:
>  
> <bean id="httpClient" class="org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor">
>  <property name="httpClient" ref="httpClientBld"/>
>  </bean>
> <bean id="requestConfigBuilder" class="org.apache.http.client.config.RequestConfig" factory-method="custom">
>  <property name="socketTimeout" value="3000" /> 
>  <property name="connectTimeout" value="4000" />
>  <property name="staleConnectionCheckEnabled" value="true"/> 
>  <property name="connectionRequestTimeout" value="2000" />
>  </bean>
> <bean id="requestConfig" factory-bean="requestConfigBuilder" factory-method="build" />
> <bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder" factory-method="create">
>  <property name="defaultRequestConfig" ref="requestConfig" />
>  <property name="maxConnTotal" value="2" />
>  <property name="maxConnPerRoute" value="2" />
>  </bean>
> <bean id="httpClientBld" factory-bean="httpClientBuilder" factory-method="build" />
>  
> However, while testing, the socket time out and connection time out doesn't seem to be working correctly... it always waits around 1000 ms for the connection timeout and 60000 for the socket time out instead of the configured values. The request connection time out seems to be working fine.
> Can you please help... is it a bug from your side? or a wrong configuration from my side?
>  
> Note that it seems the issues exists also in older versions as the following link from stack overflow discuss a similar issue for an older version: [https://stackoverflow.com/questions/21576414/setting-time-out-in-apache-http-client]
> Note that it was working fine before with Spring 3 requiring commons http client



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org