Wei-Chiu Chuang created HADOOP-14385:
----------------------------------------

             Summary: HttpExceptionUtils#validateResponse hides 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


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
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-dev-h...@hadoop.apache.org

Reply via email to