[ 
https://issues.apache.org/jira/browse/HADOOP-7469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Loughran updated HADOOP-7469:
-----------------------------------

    Attachment: HADOOP-7469.patch

updated patch; position tests after HADOOP-7668 changes
                
> 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
>
>         Attachments: HADOOP-7466-connection-handler.patch, 
> HADOOP-7469-3.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

        

Reply via email to