HTRACE-227. Remove dependency to non-public API of hadoop-common from htrace-hbase (iwasakims)
diff --git a/htrace-hbase/pom.xml b/htrace-hbase/pom.xml
index 2230b32..20075e9 100644
--- a/htrace-hbase/pom.xml
+++ b/htrace-hbase/pom.xml
@@ -32,10 +32,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hbase.version>0.99.2</hbase.version>
- <!-- <hbase.version>0.99.0-SNAPSHOT</hbase.version> -->
- <hadoop.version>2.4.0</hadoop.version>
- <!-- <hadoop.version>3.0.0-SNAPSHOT</hadoop.version> -->
- <protobuf.version>2.5.0</protobuf.version>
+ <jetty.version>9.2.13.v20150730</jetty.version>
</properties>
<build>
@@ -49,7 +46,6 @@
</resources>
<plugins>
<plugin>
- <!--Make it so assembly:single does nothing in here-->
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
@@ -84,6 +80,14 @@
<pattern>com.google.protobuf</pattern>
<shadedPattern>org.apache.htrace.com.google.protobuf</shadedPattern>
</relocation>
+ <relocation>
+ <pattern>org.eclipse.jetty</pattern>
+ <shadedPattern>org.apache.htrace.org.eclipse.jetty</shadedPattern>
+ </relocation>
+ <relocation>
+ <pattern>javax.servlet</pattern>
+ <shadedPattern>org.apache.htrace.javax.servlet</shadedPattern>
+ </relocation>
</relocations>
</configuration>
<goals>
@@ -124,7 +128,17 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
- <version>${protobuf.version}</version>
+ <version>2.5.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>${jetty.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ <version>${jetty.version}</version>
</dependency>
<!-- Global deps. -->
<dependency>
@@ -141,6 +155,7 @@
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>${hbase.version}</version>
+ <scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.htrace</groupId>
@@ -169,7 +184,7 @@
<plugin>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-maven-plugins</artifactId>
- <version>${hadoop.version}</version>
+ <version>2.7.1</version>
<configuration>
<protocVersion>${protobuf.version}</protocVersion>
<protocCommand>${protoc.path}</protocCommand>
diff --git a/htrace-hbase/src/main/java/org/apache/htrace/impl/HBaseSpanReceiver.java b/htrace-hbase/src/main/java/org/apache/htrace/impl/HBaseSpanReceiver.java
index b0720f3..1f54f18 100644
--- a/htrace-hbase/src/main/java/org/apache/htrace/impl/HBaseSpanReceiver.java
+++ b/htrace-hbase/src/main/java/org/apache/htrace/impl/HBaseSpanReceiver.java
@@ -364,6 +364,7 @@
long traceid = parent.getSpan().getSpanId().getHigh();
TraceScope child1 = Trace.startSpan("HBaseSpanReceiver.main.child.1");
Thread.sleep(10);
+ child1.close();
TraceScope child2 = Trace.startSpan("HBaseSpanReceiver.main.child.2", parent.getSpan());
Thread.sleep(10);
TraceScope gchild = Trace.startSpan("HBaseSpanReceiver.main.grandchild");
@@ -374,7 +375,6 @@
Thread.sleep(10);
child2.close();
Thread.sleep(10);
- child1.close();
parent.close();
receiver.close();
System.out.println("trace id: " + traceid);
diff --git a/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerServer.java b/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerServer.java
index da90008..1ae7165 100644
--- a/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerServer.java
+++ b/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerServer.java
@@ -22,87 +22,66 @@
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.http.HttpServer2;
-import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.DefaultServlet;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+
public class HBaseSpanViewerServer implements Tool {
private static final Log LOG = LogFactory.getLog(HBaseSpanViewerServer.class);
public static final String HTRACE_VIEWER_HTTP_ADDRESS_KEY = "htrace.viewer.http.address";
public static final String HTRACE_VIEWER_HTTP_ADDRESS_DEFAULT = "0.0.0.0:16900";
- public static final String HTRACE_CONF_ATTR = "htrace.conf";
- public static final String HTRACE_APPDIR = "webapps";
- public static final String NAME = "htrace";
-
private Configuration conf;
- private HttpServer2 httpServer;
- private InetSocketAddress httpAddress;
+ private Server server;
+ @Override
public void setConf(Configuration conf) {
this.conf = conf;
}
+ @Override
public Configuration getConf() {
return this.conf;
}
- void start() throws IOException {
- httpAddress = NetUtils.createSocketAddr(
- conf.get(HTRACE_VIEWER_HTTP_ADDRESS_KEY, HTRACE_VIEWER_HTTP_ADDRESS_DEFAULT));
- conf.set(HTRACE_VIEWER_HTTP_ADDRESS_KEY, NetUtils.getHostPortString(httpAddress));
- HttpServer2.Builder builder = new HttpServer2.Builder();
- builder.setName(NAME).setConf(conf);
- if (httpAddress.getPort() == 0) {
- builder.setFindPort(true);
+ public void stop() throws Exception {
+ if (server != null) {
+ server.stop();
}
- URI uri = URI.create("http://" + NetUtils.getHostPortString(httpAddress));
- builder.addEndpoint(uri);
- LOG.info("Starting Web-server for " + NAME + " at: " + uri);
- httpServer = builder.build();
- httpServer.setAttribute(HTRACE_CONF_ATTR, conf);
- httpServer.addServlet("gettraces",
- HBaseSpanViewerTracesServlet.PREFIX,
- HBaseSpanViewerTracesServlet.class);
- httpServer.addServlet("getspans",
- HBaseSpanViewerSpansServlet.PREFIX + "/*",
- HBaseSpanViewerSpansServlet.class);
-
- // for webapps/htrace bundled in jar.
- String rb = httpServer.getClass()
- .getClassLoader()
- .getResource("webapps/" + NAME)
- .toString();
- httpServer.getWebAppContext().setResourceBase(rb);
-
- httpServer.start();
- httpAddress = httpServer.getConnectorAddress(0);
- }
-
- void join() throws Exception {
- if (httpServer != null) {
- httpServer.join();
- }
- }
-
- void stop() throws Exception {
- if (httpServer != null) {
- httpServer.stop();
- }
- }
-
- InetSocketAddress getHttpAddress() {
- return httpAddress;
}
public int run(String[] args) throws Exception {
- start();
- join();
- stop();
+ URI uri = new URI("http://" + conf.get(HTRACE_VIEWER_HTTP_ADDRESS_KEY,
+ HTRACE_VIEWER_HTTP_ADDRESS_DEFAULT));
+ InetSocketAddress addr = new InetSocketAddress(uri.getHost(), uri.getPort());
+ server = new Server(addr);
+ ServletContextHandler root =
+ new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
+ server.setHandler(root);
+
+ String resourceBase = server.getClass()
+ .getClassLoader()
+ .getResource("webapps/htrace")
+ .toExternalForm();
+ root.setResourceBase(resourceBase);
+ root.setWelcomeFiles(new String[]{"index.html"});
+ root.addServlet(new ServletHolder(new DefaultServlet()),
+ "/");
+ root.addServlet(new ServletHolder(new HBaseSpanViewerTracesServlet(conf)),
+ "/gettraces");
+ root.addServlet(new ServletHolder(new HBaseSpanViewerSpansServlet(conf)),
+ "/getspans/*");
+
+ server.start();
+ server.join();
return 0;
}
diff --git a/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerSpansServlet.java b/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerSpansServlet.java
index 8f3f50f..3983fde 100644
--- a/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerSpansServlet.java
+++ b/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerSpansServlet.java
@@ -29,8 +29,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.util.ServletUtil;
import org.apache.htrace.protobuf.generated.SpanProtos;
public class HBaseSpanViewerSpansServlet extends HttpServlet {
@@ -43,22 +41,24 @@
return null;
}
};
+ private Configuration conf;
+
+ public HBaseSpanViewerSpansServlet(Configuration conf) {
+ this.conf = conf;
+ }
@Override
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
- final String path =
- validatePath(ServletUtil.getDecodedPath(request, PREFIX));
- if (path == null) {
+ final String path = request.getRequestURI().substring(PREFIX.length());
+ if (path == null || path.length() == 0) {
response.setContentType("text/plain");
response.getWriter().print("Invalid input");
return;
}
HBaseSpanViewer viewer = tlviewer.get();
if (viewer == null) {
- final Configuration conf = (Configuration) getServletContext()
- .getAttribute(HBaseSpanViewerServer.HTRACE_CONF_ATTR);
viewer = new HBaseSpanViewer(conf);
tlviewer.set(viewer);
}
@@ -89,9 +89,4 @@
viewer.close();
}
}
-
- public static String validatePath(String p) {
- return p == null || p.length() == 0?
- null: new Path(p).toUri().getPath();
- }
}
diff --git a/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerTracesServlet.java b/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerTracesServlet.java
index b0370c4..37ed43c 100644
--- a/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerTracesServlet.java
+++ b/htrace-hbase/src/main/java/org/apache/htrace/viewer/HBaseSpanViewerTracesServlet.java
@@ -29,8 +29,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.util.ServletUtil;
import org.apache.htrace.protobuf.generated.SpanProtos;
public class HBaseSpanViewerTracesServlet extends HttpServlet {
@@ -43,6 +41,11 @@
return null;
}
};
+ private Configuration conf;
+
+ public HBaseSpanViewerTracesServlet(Configuration conf) {
+ this.conf = conf;
+ }
@Override
@SuppressWarnings("unchecked")
@@ -50,8 +53,6 @@
throws ServletException, IOException {
HBaseSpanViewer viewer = tlviewer.get();
if (viewer == null) {
- final Configuration conf = (Configuration) getServletContext()
- .getAttribute(HBaseSpanViewerServer.HTRACE_CONF_ATTR);
viewer = new HBaseSpanViewer(conf);
tlviewer.set(viewer);
}
diff --git a/htrace-hbase/src/main/webapps/static/bootstrap-theme.min.css b/htrace-hbase/src/main/webapps/htrace/bootstrap-theme.min.css
similarity index 100%
rename from htrace-hbase/src/main/webapps/static/bootstrap-theme.min.css
rename to htrace-hbase/src/main/webapps/htrace/bootstrap-theme.min.css
diff --git a/htrace-hbase/src/main/webapps/static/bootstrap.min.css b/htrace-hbase/src/main/webapps/htrace/bootstrap.min.css
similarity index 100%
rename from htrace-hbase/src/main/webapps/static/bootstrap.min.css
rename to htrace-hbase/src/main/webapps/htrace/bootstrap.min.css
diff --git a/htrace-hbase/src/main/webapps/static/d3.min.js b/htrace-hbase/src/main/webapps/htrace/d3.min.js
similarity index 100%
rename from htrace-hbase/src/main/webapps/static/d3.min.js
rename to htrace-hbase/src/main/webapps/htrace/d3.min.js
diff --git a/htrace-hbase/src/main/webapps/htrace/spans.html b/htrace-hbase/src/main/webapps/htrace/spans.html
index 28b48b7..6e3fa45 100644
--- a/htrace-hbase/src/main/webapps/htrace/spans.html
+++ b/htrace-hbase/src/main/webapps/htrace/spans.html
@@ -17,11 +17,11 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
-<script src="/static/d3.min.js" type="text/javascript"></script>
+<script src="d3.min.js" type="text/javascript"></script>
<script src="spans.js" type="text/javascript"></script>
<head>
- <link href="/static/bootstrap.min.css" rel="stylesheet">
- <link href="/static/bootstrap-theme.min.css" rel="stylesheet">
+ <link href="bootstrap.min.css" rel="stylesheet">
+ <link href="bootstrap-theme.min.css" rel="stylesheet">
</head>
<body>
</body>
diff --git a/htrace-hbase/src/main/webapps/htrace/spans.js b/htrace-hbase/src/main/webapps/htrace/spans.js
index 03ff6fb..8e58860 100644
--- a/htrace-hbase/src/main/webapps/htrace/spans.js
+++ b/htrace-hbase/src/main/webapps/htrace/spans.js
@@ -21,7 +21,7 @@
const size_tl = 6;
const margin = {top: 50, bottom: 50, left: 50, right: 1000, process: 250};
-const ROOT_SPAN_ID = "477902"; // constants defined in org.apache.htrace.Span
+const ROOT_SPAN_ID = "0";
const traceid = window.location.search.substring(1).split("=")[1];
d3.json("/getspans/" + traceid, function(spans) {
diff --git a/htrace-hbase/src/main/webapps/htrace/traces.html b/htrace-hbase/src/main/webapps/htrace/traces.html
index a8e1e2a..c0f0a37 100644
--- a/htrace-hbase/src/main/webapps/htrace/traces.html
+++ b/htrace-hbase/src/main/webapps/htrace/traces.html
@@ -17,11 +17,11 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
-<script src="/static/d3.min.js" type="text/javascript"></script>
+<script src="d3.min.js" type="text/javascript"></script>
<script src="traces.js" type="text/javascript"></script>
<head>
- <link href="/static/bootstrap.min.css" rel="stylesheet">
- <link href="/static/bootstrap-theme.min.css" rel="stylesheet">
+ <link href="bootstrap.min.css" rel="stylesheet">
+ <link href="bootstrap-theme.min.css" rel="stylesheet">
</head>
<body>
</body>