[prev in list] [next in list] [prev in thread] [next in thread]
List: hadoop-dev
Subject: [jira] [Resolved] (HADOOP-7469) add a standard handler for socket
From: "Steve Loughran (Resolved) (JIRA)" <jira () apache ! org>
Date: 2011-09-30 14:20:45
Message-ID: 557416789.11454.1317392445695.JavaMail.tomcat () hel ! zones ! apache ! org
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/HADOOP-7469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]
Steve Loughran resolved HADOOP-7469.
------------------------------------
Resolution: Fixed
Fix Version/s: 0.23.0
Target Version/s: 0.23.0, 0.24.0 (was: 0.24.0, 0.23.0)
backported to 0.23
> add a standard handler for socket connection problems which improves diagnostics
> --------------------------------------------------------------------------------
>
> Key: HADOOP-7469
> URL: https://issues.apache.org/jira/browse/HADOOP-7469
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: util
> Affects Versions: 0.20.203.0, 0.23.0
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Minor
> Labels: debugging
> Fix For: 0.23.0, 0.24.0
>
> Attachments: HADOOP-7466-connection-handler.patch, HADOOP-7469-3.patch, \
> HADOOP-7469-b023.patch, HADOOP-7469.patch, HADOOP-7469.patch, HADOOP-7469.patch
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> connection refused, connection timed out, no route to host, etc, are classic \
> IOExceptions that can be raised in a lot of parts of the code. The standard JDK \
> exceptions are useless for debugging as they # don't include the destination \
> (host, port) that can be used in diagnosing service dead/blocked problems # don't \
> include any source hostname that can be used to handle routing issues # assume the \
> reader understands the TCP stack. It's obvious from the -user lists that a lot of \
> people hit these problems and don't know how to fix them. Sometimes the source has \
> been patched to insert the diagnostics, but it may be convenient to have a single \
> method to translate some {code}
> SocketException processIOException(SocketException e, String destHost, int \
> destPort) { String localhost = getLocalHostname();
> String details = "From "+ localhost +" to "+ desthost + ":"+destPort;
> if (e instanceof ConnectException) {
> return new ConnectException(details
> + " -- see http://wiki.apache.org/hadoop/ConnectionRefused --" + e, e);
> }
> if (e instanceof UnknownHostException) {
> return new UnknownHostException(details
> + " -- see http://wiki.apache.org/hadoop/UnknownHost --" + e, e);
> }
> // + handlers for other common socket exceptions
>
> //and a default that returns an unknown class unchanged
> return e;
> }
>
> {code}
> Testing: try to connect to an unknown host, a local port that isn't live, etc. It's \
> hard to replicate all failures consistently. It may be simpler just to verify that \
> if you pass in a specific exception, the string is expanded and the class is \
> unchanged. This code could then be patched in to places where IO takes place. Note \
> that Http Components and HttpClient libs already add some destination details on \
> some operation failures, with their own HttpException tree: it's simplest to leave \
> these alone.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: \
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more \
information on JIRA, see: http://www.atlassian.com/software/jira
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic