[
https://issues.apache.org/jira/browse/HTTPCLIENT-2437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136620#comment-18136620
]
Oleg Kalnichevski commented on HTTPCLIENT-2437:
-----------------------------------------------
[~evanshin] I reviewed HttpClient code and can confirm that pending connection
requests in the event-driven connection pools do not get validated and do not
timeout in case of the pool being inactive. In the scenario you have described
the second lease request does not get validated until the connection is
released back to the pool (or some other event takes place). This is by design.
One has to run an additional watcher thread to periodically call
`#closeExpired()` method of the connection pool in order to trigger connection
life cycle and connection request validity.
It would be nice to document that in the configuration or the connection
management guide, or both.
Oleg
> Async connectionRequestTimeout does not fire on an otherwise idle pool
> ----------------------------------------------------------------------
>
> Key: HTTPCLIENT-2437
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2437
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient (async), Site
> Affects Versions: 5.6.5
> Reporter: seongsu shin
> Priority: Major
>
> h2. Summary
> On the async client, {{connectionRequestTimeout}} does not seem to fire
> unless something else happens in the connection pool. A request waiting for a
> lease can wait much longer than the configured timeout.
> h2. How to reproduce
> # Set {{connectionRequestTimeout}} to 1s and limit the pool to a single
> connection.
> # Send request A to a server that never completes the response. It holds the
> only connection.
> # Send request B to the same route.
> h2. Observed
> Request B was still waiting after 10s.
> h2. Expected
> Request B fails with a connection request timeout after about 1s.
> h2. Analysis
> I could not find a caller of {{validatePendingRequests()}}. Pending lease
> requests seem to be expired only when the pool is touched by other activity,
> so an otherwise idle pool never expires them. Enforcing this may need a
> periodic task or watcher thread, but I'm not sure whether this is intended.
> h2. Notes
> Found while writing the timeouts section for HTTPCLIENT-2404
> (https://github.com/apache/httpcomponents-website/pull/48). Oleg Kalnichevski
> asked there for a JIRA.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]