This is an automated email from the ASF dual-hosted git repository.

apurtell pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 832bfb0  HBASE-22225 Profiler tab on Master/RS UI not working w/o 
comprehensive message
832bfb0 is described below

commit 832bfb0c6f055f275582bca72d4fb2b43da100d7
Author: Andrew Purtell <[email protected]>
AuthorDate: Fri Apr 26 16:41:31 2019 -0700

    HBASE-22225 Profiler tab on Master/RS UI not working w/o comprehensive 
message
---
 .../org/apache/hadoop/hbase/http/HttpServer.java   |  1 +
 .../apache/hadoop/hbase/http/ProfileServlet.java   | 27 ++++++++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git 
a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java 
b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
index e816eed..e96e057 100644
--- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
+++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
@@ -733,6 +733,7 @@ public class HttpServer implements FilterContainer {
       genCtx.setResourceBase(tmpDir.toAbsolutePath().toString());
       genCtx.setDisplayName("prof-output");
     } else {
+      addServlet("prof", "/prof", ProfileServlet.DisabledServlet.class);
       LOG.info("ASYNC_PROFILER_HOME environment variable and 
async.profiler.home system property " +
         "not specified. Disabling /prof endpoint.");
     }
diff --git 
a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java 
b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
index 09d9734..5dfaa32 100644
--- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
+++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
@@ -85,6 +85,7 @@ import 
org.apache.hbase.thirdparty.com.google.common.base.Joiner;
  */
 @InterfaceAudience.Private
 public class ProfileServlet extends HttpServlet {
+
   private static final long serialVersionUID = 1L;
   private static final Logger LOG = 
LoggerFactory.getLogger(ProfileServlet.class);
 
@@ -176,7 +177,10 @@ public class ProfileServlet extends HttpServlet {
     if (asyncProfilerHome == null || asyncProfilerHome.trim().isEmpty()) {
       resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
       setResponseHeader(resp);
-      resp.getWriter().write("ASYNC_PROFILER_HOME env is not set.");
+      resp.getWriter().write("ASYNC_PROFILER_HOME env is not set.\n\n" +
+        "Please ensure the prerequsites for the Profiler Servlet have been 
installed and the\n" +
+        "environment is properly configured. For more information please 
see\n" +
+        "http://hbase.apache.org/book.html#profiler\n";);
       return;
     }
 
@@ -357,7 +361,7 @@ public class ProfileServlet extends HttpServlet {
     return Output.SVG;
   }
 
-  private void setResponseHeader(final HttpServletResponse response) {
+  private static void setResponseHeader(final HttpServletResponse response) {
     response.setHeader(ACCESS_CONTROL_ALLOW_METHODS, ALLOWED_METHODS);
     response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*");
     response.setContentType(CONTENT_TYPE_TEXT);
@@ -372,4 +376,23 @@ public class ProfileServlet extends HttpServlet {
 
     return asyncProfilerHome;
   }
+
+  public static class DisabledServlet extends HttpServlet {
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    protected void doGet(final HttpServletRequest req, final 
HttpServletResponse resp)
+        throws IOException {
+      resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+      setResponseHeader(resp);
+      resp.getWriter().write("The profiler servlet was disabled at 
startup.\n\n" +
+        "Please ensure the prerequsites for the Profiler Servlet have been 
installed and the\n" +
+        "environment is properly configured. For more information please 
see\n" +
+        "http://hbase.apache.org/book.html#profiler\n";);
+      return;
+    }
+
+  }
+
 }
\ No newline at end of file

Reply via email to