hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1485) Wrong type of exception raised because of hardcoded string-compare
Date Sat, 22 Mar 2014 00:04:50 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13943754#comment-13943754

Sebb commented on HTTPCLIENT-1485:

FreeBSD seems to take 75 seconds to timeout and WinXP about 3 minutes.

So a default threshold value of perhaps 60 seconds should be long enough to ensure that it
does not catch other failures, whilst still detecting the OS timeout.

What other failures are likely to take more than a second to occur?
The only one I can think of is DNS resolution, but if that really takes 60 seconds maybe it
should be treated as a connect timeout anyway.

If the threshold value can be defined externally - e.g. a System property, or perhaps a context
setting - then the threshold can be adjusted if it proves necessary.

> Wrong type of exception raised because of hardcoded string-compare
> ------------------------------------------------------------------
>                 Key: HTTPCLIENT-1485
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1485
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.3.2, 4.3.3
>            Reporter: Dominik Bennersdorfer
> In the lines org.apache.http.impl.conn.HttpClientConnectionOperator.java:134-143 we found
that the message of the ConnectException is compared to the hardcoded string "Connection timed
> This can causes wrong break down to the http-client own Exception-types on Systems with
other languages.
> } catch (final ConnectException ex) {
> 	if (last) {
> 		final String msg = ex.getMessage();
> 		if ("Connection timed out".equals(msg)) {
> 			throw new ConnectTimeoutException(ex, host, addresses);
> 		} else {
> 			throw new HttpHostConnectException(ex, host, addresses);
> 		}
> 	}
> }
> To illustrate the Problem see the following Example:
> On our server the locale is set to "de_AT.ISO-8859-15@euro" 
> with a simple wget i get this (see the message in last line)
> root@MRW-MJA-vml1:/tmp# wget http://www.google.at:81
> --2014-03-14 12:46:44--  http://www.google.at:81/
> Auflösen des Hostnamen www.google.at...
> Verbindungsaufbau zu www.google.at||:81... fehlgeschlagen: Die Wartezeit
für die Verbindung ist abgelaufen.
> after changing the locale to "en_US.ISO-8859-15" i get the following:
> root@MRW-MJA-vml1:/tmp# wget http://www.google.at:81
> --2014-03-14 12:43:33--  http://www.google.at:81/
> Resolving www.google.at...
> Connecting to www.google.at||:81... failed: Connection timed out.
> Example with httpclient 4.3.3 (parts from our tracing):
> Exception<org.apache.http.conn.HttpHostConnectException> Message<Connect to
**** failed: Die Wartezeit für die Verbindung ist abgelaufen> 
> Cause<java.net.ConnectException: Die Wartezeit für die Verbindung ist abgelaufen>

> 	at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:138)
> 	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
> 	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:357)
> 	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:218)
> 	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
> 	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
> 	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
> 	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
> 	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
> 	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
> We excpected to get a ConnectTimeoutException rather than a HttpHostConnectException

This message was sent by Atlassian JIRA

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

View raw message