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/08/12 11:45:00 UTC
[jira] [Resolved] (HTTPCLIENT-1941) HttpAsyncClient throws generic
exception when connection lease request times out
[ https://issues.apache.org/jira/browse/HTTPCLIENT-1941?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Kalnichevski resolved HTTPCLIENT-1941.
-------------------------------------------
Resolution: Won't Fix
> HttpAsyncClient throws generic exception when connection lease request times out
> --------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1941
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1941
> Project: HttpComponents HttpClient
> Issue Type: Improvement
> Components: HttpClient (async)
> Reporter: Marcelo Cenerino
> Priority: Major
>
> The classic HttpClient throws a "org.apache.http.conn.ConnectionPoolTimeoutException" when a connection cannot be obtained within a given timeout. The async HttpClient, on the other hand, throws a generic "java.util.concurrent.TimeoutException":
> - org.apache.http.nio.pool.AbstractNIOConnPool:
> {code:java}
> final long deadline = request.getDeadline();
> final long now = System.currentTimeMillis();
> if (now > deadline) {
> request.failed(new TimeoutException());
> return false;
> }
> {code}
> The specific "ConnectionPoolTimeoutException" was handier, both to catch and handle it in the code as well as to analise stack traces.
> In fact, the classic HttpClient translates the "j.u.c.TimeoutException" into "o.a.h.c.ConnectionPoolTimeoutException":
> - org.apache.http.impl.conn.PoolingHttpClientConnectionManager:
> {code:java}
> protected HttpClientConnection leaseConnection(
> final Future<CPoolEntry> future,
> final long timeout,
> final TimeUnit tunit) throws InterruptedException, ExecutionException, ConnectionPoolTimeoutException {
> final CPoolEntry entry;
> try {
> // omitted
> } catch (final TimeoutException ex) {
> throw new ConnectionPoolTimeoutException("Timeout waiting for connection from pool");
> }
> }
> {code}
>
> It would be nice if the async client did the same. However, this could break existing code relying on the current behavior.
--
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