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;

Reply via email to