Repository: incubator-slider Updated Branches: refs/heads/develop 2d2062af0 -> b06d99f8b
SLIDER-797 extract status & body in jersey exceptions. Currently log the body text but don't include it in the text of the exception Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b06d99f8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b06d99f8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b06d99f8 Branch: refs/heads/develop Commit: b06d99f8b9b63a9898324f9953a084169eacb7d4 Parents: 2d2062a Author: Steve Loughran <[email protected]> Authored: Thu Feb 26 18:11:28 2015 -0800 Committer: Steve Loughran <[email protected]> Committed: Thu Feb 26 18:11:58 2015 -0800 ---------------------------------------------------------------------- .../core/exceptions/ExceptionConverter.java | 28 +++++++++++++++++--- .../core/registry/retrieve/AMWebClient.java | 5 ---- .../registry/retrieve/RegistryRetriever.java | 8 +++--- 3 files changed, 29 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b06d99f8/slider-core/src/main/java/org/apache/slider/core/exceptions/ExceptionConverter.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/core/exceptions/ExceptionConverter.java b/slider-core/src/main/java/org/apache/slider/core/exceptions/ExceptionConverter.java index 02cc64a..77d36a3 100644 --- a/slider-core/src/main/java/org/apache/slider/core/exceptions/ExceptionConverter.java +++ b/slider-core/src/main/java/org/apache/slider/core/exceptions/ExceptionConverter.java @@ -24,6 +24,8 @@ import com.sun.jersey.api.client.UniformInterfaceException; import org.apache.hadoop.fs.PathAccessDeniedException; import org.apache.hadoop.fs.PathIOException; import org.apache.hadoop.yarn.webapp.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; @@ -34,6 +36,8 @@ import java.io.IOException; * extraction of details and finer-grained conversions. */ public class ExceptionConverter { + private static final Logger + log = LoggerFactory.getLogger(ExceptionConverter.class); /** * Uprate error codes 400 and up into faults; @@ -55,6 +59,20 @@ public class ExceptionConverter { ClientResponse response = exception.getResponse(); if (response != null) { int status = response.getStatus(); + String body = ""; + try { + if (response.hasEntity()) { + body = response.getEntity(String.class); + log.error("{} {} returned status {} and body\n{}", + verb, targetURL, status, body); + } else { + log.error("{} {} returned status {} and empty body", + verb, targetURL, status); + } + } catch (Exception e) { + log.warn("Failed to extract body from client response", e); + } + if (status == HttpServletResponse.SC_UNAUTHORIZED || status == HttpServletResponse.SC_FORBIDDEN) { ioe = new PathAccessDeniedException(targetURL); @@ -62,9 +80,13 @@ public class ExceptionConverter { if (status >= 400 && status < 500) { ioe = new FileNotFoundException(targetURL); } - } - - if (ioe == null) { + if (ioe == null) { + ioe = new PathIOException(targetURL, + verb + " " + targetURL + + " failed with status code : " + status + + ":" + exception); + } + } else { ioe = new PathIOException(targetURL, verb + " " + targetURL + " failed: " + exception); } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b06d99f8/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java index 072c1e1..dd9af16 100644 --- a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java +++ b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/AMWebClient.java @@ -121,9 +121,4 @@ public class AMWebClient { return resource; } - public WebResource jsonResource(String url) { - WebResource resource = resource(url); - resource.type(MediaType.APPLICATION_JSON); - return resource; - } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b06d99f8/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java index 6cae70c..6c665a2 100644 --- a/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java +++ b/slider-core/src/main/java/org/apache/slider/core/registry/retrieve/RegistryRetriever.java @@ -97,7 +97,7 @@ public class RegistryRetriever extends AMWebClient { String confURL = getConfigurationURL(external); try { - WebResource webResource = jsonResource(confURL); + WebResource webResource = resource(confURL); log.debug("GET {}", confURL); PublishedConfigSet configSet = webResource.get(PublishedConfigSet.class); return configSet; @@ -132,7 +132,7 @@ public class RegistryRetriever extends AMWebClient { String exportsUrl = getExportURL(external); try { - WebResource webResource = jsonResource(exportsUrl); + WebResource webResource = resource(exportsUrl); log.debug("GET {}", exportsUrl); PublishedExportsSet exportSet = webResource.get(PublishedExportsSet.class); return exportSet; @@ -159,7 +159,7 @@ public class RegistryRetriever extends AMWebClient { } confURL = SliderUtils.appendToURL(confURL, name); try { - WebResource webResource = jsonResource(confURL); + WebResource webResource = resource(confURL); PublishedConfiguration publishedConf = webResource.get(PublishedConfiguration.class); return publishedConf; @@ -185,7 +185,7 @@ public class RegistryRetriever extends AMWebClient { String exportsURL = getExportURL(external); exportsURL = SliderUtils.appendToURL(exportsURL, name); try { - WebResource webResource = jsonResource(exportsURL); + WebResource webResource = resource(exportsURL); PublishedExports publishedExports = webResource.get(PublishedExports.class); return publishedExports;
