[ 
https://issues.apache.org/jira/browse/CXF-6910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15614782#comment-15614782
 ] 

Sebastien Petrucci commented on CXF-6910:
-----------------------------------------

Hello Fang,

While trying to understand the root cause of the ENTESB-6222, I read again the 
story behing this improvement. And I'm a little bit confused about the reason 
of this change.

You mention "[...] if there's no data on the socket in a certain time, the 
connection would be closed, this overrule the TTL value of a connection [...]". 
In fact, I would *expect* the connection to be closed before the TTL in case of 
timeout. Because if the timeout occurs then it means that the response was not 
received and that there is no certainty on the state of that connection. As 
such, it cannot be put back into the connection pool and should be closed right 
away. Connection TTL should only apply to unactive connections on which all 
requests where successfull, which should be the case 99% of the time.

Do that make sense ?

Best Regards,
Sebastien.


> don't need setSocketTimeout when create ahc RequestConfig
> ---------------------------------------------------------
>
>                 Key: CXF-6910
>                 URL: https://issues.apache.org/jira/browse/CXF-6910
>             Project: CXF
>          Issue Type: Improvement
>          Components: Transports
>            Reporter: Freeman Fang
>            Assignee: Freeman Fang
>             Fix For: 3.0.10, 3.1.7, 3.2.0
>
>
> currently when we create the ahc RequestConfig we set the socketTimeout as
> setSocketTimeout((int) csPolicy.getReceiveTimeout()
> this cause the created http connection controlled by the socket level 
> timeout, that said, if there's no data on the socket in a certain time, the 
> connection would be closed, this overrule the TTL value of a connection, 
> which means the connection timeToLive can't be managed by a 
> connectionPoolManager, this is really painful for heavy loaded client request 
> as we want the connectionPoolManager to manage the connection so that we 
> could reuse the connection.
> Fortunately in AsyncHTTPConduit
> {code}
> protected synchronized HttpResponse getHttpResponse()
> {code}
> we already handle the timeout at application level so that we needn't set 
> that at socket level, so that let the connectionPoolManager can decide the 
> connection TTL



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to