[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