[ 
https://issues.apache.org/jira/browse/HADOOP-14385?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16869119#comment-16869119
 ] 

Hudson commented on HADOOP-14385:
---------------------------------

FAILURE: Integrated in Jenkins build Hadoop-trunk-Commit #16798 (See 
[https://builds.apache.org/job/Hadoop-trunk-Commit/16798/])
HADOOP-14385. HttpExceptionUtils#validateResponse swallows exceptions. 
(weichiu: rev 840d02ca5ba013bddd28d7c1abd242b5bb8cc39f)
* (edit) 
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/HttpExceptionUtils.java


> HttpExceptionUtils#validateResponse swallows exceptions
> -------------------------------------------------------
>
>                 Key: HADOOP-14385
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14385
>             Project: Hadoop Common
>          Issue Type: Improvement
>            Reporter: Wei-Chiu Chuang
>            Assignee: Wei-Chiu Chuang
>            Priority: Trivial
>         Attachments: HADOOP-14385.001.patch, HADOOP-14385.002.patch
>
>
> In the following code
> {code:title=HttpExceptionUtils#validateResponse}
> try {
>         es = conn.getErrorStream();
>         ObjectMapper mapper = new ObjectMapper();
>         Map json = mapper.readValue(es, Map.class);
>         json = (Map) json.get(ERROR_JSON);
>         String exClass = (String) json.get(ERROR_CLASSNAME_JSON);
>         String exMsg = (String) json.get(ERROR_MESSAGE_JSON);
>         if (exClass != null) {
>           try {
>             ClassLoader cl = HttpExceptionUtils.class.getClassLoader();
>             Class klass = cl.loadClass(exClass);
>             Constructor constr = klass.getConstructor(String.class);
>             toThrow = (Exception) constr.newInstance(exMsg);
>           } catch (Exception ex) {
>             toThrow = new IOException(String.format(
>                 "HTTP status [%d], exception [%s], message [%s] ",
>                 conn.getResponseCode(), exClass, exMsg));
>           }
>         } else {
>           String msg = (exMsg != null) ? exMsg : conn.getResponseMessage();
>           toThrow = new IOException(String.format(
>               "HTTP status [%d], message [%s]", conn.getResponseCode(), msg));
>         }
>       } catch (Exception ex) {
>         toThrow = new IOException(String.format( <-- here
>             "HTTP status [%d], message [%s]", conn.getResponseCode(),
>             conn.getResponseMessage()));
>       }
> {code}
> If the an exception is thrown within the try block, the initial exception is 
> swallowed, and it doesn't help debugging.
> We had to cross reference this exception with the KMS server side to guess 
> what happened.
> IMHO the IOException thrown should also carry the initial exception. It 
> should also print exClass and exMsg. It probably failed to instantiate an 
> exception class.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to