This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push:
new 8d18a85 HBASE-22225 Profiler tab on Master/RS UI not working w/o
comprehensive message
8d18a85 is described below
commit 8d18a85e30c5475fe90f1874e76a38cd6d5ede91
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-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
index 660e02e..347e2c4 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java
@@ -735,6 +735,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-server/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
index 2cd6924..34a9675 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java
@@ -83,6 +83,7 @@ import org.apache.hadoop.hbase.util.ProcessUtils;
* // lock
*/
public class ProfileServlet extends HttpServlet {
+
private static final long serialVersionUID = 1L;
private static final Log LOG = LogFactory.getLog(ProfileServlet.class);
@@ -174,7 +175,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;
}
@@ -392,7 +396,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);
@@ -407,4 +411,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