[
https://issues.apache.org/jira/browse/HADOOP-14385?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wei-Chiu Chuang updated HADOOP-14385:
-------------------------------------
Resolution: Fixed
Fix Version/s: 3.1.3
3.2.1
3.3.0
Status: Resolved (was: Patch Available)
Amazingly the patch still applies after 2 years.
Pushed to trunk branch-3.2 and branch-3.1. Thanks [[email protected]] for the
review
> 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
> Fix For: 3.3.0, 3.2.1, 3.1.3
>
> 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]