You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by bi...@apache.org on 2015/02/20 19:55:28 UTC

accumulo git commit: ACCUMULO-3528 upgrade htrace dependency to o.a.htrace 3.1.0-incubating

Repository: accumulo
Updated Branches:
  refs/heads/master 50d351201 -> 7e659af1a


ACCUMULO-3528 upgrade htrace dependency to o.a.htrace 3.1.0-incubating


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/7e659af1
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/7e659af1
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/7e659af1

Branch: refs/heads/master
Commit: 7e659af1ac439031a435c26a288efdda3950ea3e
Parents: 50d3512
Author: Billie Rinaldi <bi...@gmail.com>
Authored: Tue Feb 17 11:51:24 2015 -0800
Committer: Billie Rinaldi <bi...@gmail.com>
Committed: Fri Feb 20 10:53:37 2015 -0800

----------------------------------------------------------------------
 assemble/pom.xml                                |   8 +-
 assemble/src/main/assemblies/component.xml      |   2 +-
 core/pom.xml                                    |   8 +-
 .../impl/TabletServerBatchReaderIterator.java   |   2 +-
 .../accumulo/core/trace/CountSampler.java       |   8 +-
 .../accumulo/core/trace/DistributedTrace.java   |  40 ++-----
 .../org/apache/accumulo/core/trace/Span.java    |  21 ++--
 .../org/apache/accumulo/core/trace/Trace.java   |  28 ++---
 .../org/apache/accumulo/core/trace/Tracer.java  |   4 +-
 .../core/trace/wrappers/TraceCallable.java      |  69 ------------
 .../trace/wrappers/TraceExecutorService.java    | 110 -------------------
 .../core/trace/wrappers/TraceRunnable.java      |  79 -------------
 examples/simple/pom.xml                         |   4 +
 .../examples/simple/client/TracingExample.java  |   6 +-
 pom.xml                                         |  12 +-
 server/base/pom.xml                             |   4 +
 .../accumulo/server/client/BulkImporter.java    |   2 +-
 server/master/pom.xml                           |   4 +
 .../accumulo/master/tableOps/BulkImport.java    |   2 +-
 server/tracer/pom.xml                           |   8 +-
 .../accumulo/tracer/AsyncSpanReceiver.java      |  41 ++++---
 .../accumulo/tracer/SendSpansViaThrift.java     |  10 +-
 .../org/apache/accumulo/tracer/SpanTree.java    |   2 +-
 .../org/apache/accumulo/tracer/TraceDump.java   |   2 +-
 .../org/apache/accumulo/tracer/TraceServer.java |   2 +-
 .../apache/accumulo/tracer/ZooTraceClient.java  |  33 +++---
 .../org/apache/accumulo/tracer/TracerTest.java  |  21 ++--
 server/tserver/pom.xml                          |   4 +
 .../accumulo/tserver/CompactionQueue.java       |  30 +++--
 .../tserver/TabletServerResourceManager.java    |   2 +-
 trace/pom.xml                                   |   2 +-
 .../accumulo/trace/instrument/CountSampler.java |   8 +-
 .../accumulo/trace/instrument/Sampler.java      |   2 +-
 .../apache/accumulo/trace/instrument/Span.java  |   6 +-
 .../apache/accumulo/trace/instrument/Trace.java |   6 +-
 35 files changed, 175 insertions(+), 417 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/assemble/pom.xml
----------------------------------------------------------------------
diff --git a/assemble/pom.xml b/assemble/pom.xml
index 388a956..2a7156b 100644
--- a/assemble/pom.xml
+++ b/assemble/pom.xml
@@ -129,6 +129,10 @@
       <artifactId>commons-vfs2</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
     </dependency>
@@ -157,10 +161,6 @@
       <artifactId>jetty-util</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.htrace</groupId>
-      <artifactId>htrace-core</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/assemble/src/main/assemblies/component.xml
----------------------------------------------------------------------
diff --git a/assemble/src/main/assemblies/component.xml b/assemble/src/main/assemblies/component.xml
index 8dfce4d..a48023e 100644
--- a/assemble/src/main/assemblies/component.xml
+++ b/assemble/src/main/assemblies/component.xml
@@ -42,7 +42,7 @@
         <include>org.eclipse.jetty:jetty-server</include>
         <include>org.eclipse.jetty:jetty-servlet</include>
         <include>org.eclipse.jetty:jetty-util</include>
-        <include>org.htrace:htrace-core</include>
+        <include>org.apache.htrace:htrace-core</include>
         <include>org.slf4j:slf4j-api</include>
         <include>org.slf4j:slf4j-log4j12</include>
       </includes>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 67b486e..a736a3d 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -96,6 +96,10 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
     </dependency>
@@ -104,10 +108,6 @@
       <artifactId>zookeeper</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.htrace</groupId>
-      <artifactId>htrace-core</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
index b1966b7..61f6d15 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
@@ -59,10 +59,10 @@ import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.tabletserver.thrift.NoSuchScanIDException;
 import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;
 import org.apache.accumulo.core.trace.Tracer;
-import org.apache.accumulo.core.trace.wrappers.TraceRunnable;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.OpTimer;
 import org.apache.hadoop.io.Text;
+import org.apache.htrace.wrappers.TraceRunnable;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.thrift.TApplicationException;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/CountSampler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/CountSampler.java b/core/src/main/java/org/apache/accumulo/core/trace/CountSampler.java
index df1a02a..852fa9d 100644
--- a/core/src/main/java/org/apache/accumulo/core/trace/CountSampler.java
+++ b/core/src/main/java/org/apache/accumulo/core/trace/CountSampler.java
@@ -16,8 +16,12 @@
  */
 package org.apache.accumulo.core.trace;
 
-public class CountSampler extends org.htrace.impl.CountSampler {
+import org.apache.htrace.HTraceConfiguration;
+
+import java.util.Collections;
+
+public class CountSampler extends org.apache.htrace.impl.CountSampler {
   public CountSampler(long frequency) {
-    super(frequency);
+    super(HTraceConfiguration.fromMap(Collections.singletonMap(CountSampler.SAMPLER_FREQUENCY_CONF_KEY, Long.toString(frequency))));
   }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/DistributedTrace.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/DistributedTrace.java b/core/src/main/java/org/apache/accumulo/core/trace/DistributedTrace.java
index ab81f30..9970415 100644
--- a/core/src/main/java/org/apache/accumulo/core/trace/DistributedTrace.java
+++ b/core/src/main/java/org/apache/accumulo/core/trace/DistributedTrace.java
@@ -28,12 +28,12 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.fate.zookeeper.ZooReader;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.util.ReflectionUtils;
 import org.apache.hadoop.util.ShutdownHookManager;
+import org.apache.htrace.HTraceConfiguration;
+import org.apache.htrace.SpanReceiver;
+import org.apache.htrace.SpanReceiverBuilder;
 import org.apache.log4j.Logger;
 import org.apache.zookeeper.KeeperException;
-import org.htrace.HTraceConfiguration;
-import org.htrace.SpanReceiver;
 
 /**
  * Utility class to enable tracing for Accumulo server processes.
@@ -128,7 +128,7 @@ public class DistributedTrace {
     if (service != null) {
       setProperty(conf, TRACE_SERVICE_PROPERTY, service);
     }
-    org.htrace.Trace.setProcessId(service);
+    org.apache.htrace.Trace.setProcessId(service);
     ShutdownHookManager.get().addShutdownHook(new Runnable() {
       public void run() {
         Trace.off();
@@ -156,36 +156,18 @@ public class DistributedTrace {
       return;
     }
     for (String className : receiverNames) {
-      try {
-        implClass = Class.forName(className);
-        receivers.add(loadInstance(implClass, conf));
+      SpanReceiverBuilder builder = new SpanReceiverBuilder(wrapHadoopConf(conf));
+      SpanReceiver rcvr = builder.spanReceiverClass(className.trim()).build();
+      if (rcvr == null) {
+        log.warn("Failed to load SpanReceiver " + className);
+      } else {
+        receivers.add(rcvr);
         log.info("SpanReceiver " + className + " was loaded successfully.");
-      } catch (ClassNotFoundException e) {
-        log.warn("Class " + className + " cannot be found.", e);
-      } catch (IOException e) {
-        log.warn("Load SpanReceiver " + className + " failed.", e);
       }
     }
     for (SpanReceiver rcvr : receivers) {
-      org.htrace.Trace.addReceiver(rcvr);
-    }
-  }
-
-  private static SpanReceiver loadInstance(Class<?> implClass, Configuration conf) throws IOException {
-    SpanReceiver impl;
-    try {
-      Object o = ReflectionUtils.newInstance(implClass, conf);
-      impl = (SpanReceiver) o;
-      impl.configure(wrapHadoopConf(conf));
-    } catch (SecurityException e) {
-      throw new IOException(e);
-    } catch (IllegalArgumentException e) {
-      throw new IOException(e);
-    } catch (RuntimeException e) {
-      throw new IOException(e);
+      org.apache.htrace.Trace.addReceiver(rcvr);
     }
-
-    return impl;
   }
 
   private static void setProperty(Configuration conf, String key, String value) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/Span.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/Span.java b/core/src/main/java/org/apache/accumulo/core/trace/Span.java
index b72e6ee..702c9c1 100644
--- a/core/src/main/java/org/apache/accumulo/core/trace/Span.java
+++ b/core/src/main/java/org/apache/accumulo/core/trace/Span.java
@@ -16,29 +16,29 @@
  */
 package org.apache.accumulo.core.trace;
 
+import org.apache.htrace.NullScope;
+import org.apache.htrace.TimelineAnnotation;
+import org.apache.htrace.TraceScope;
+
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.util.List;
 import java.util.Map;
 
-import org.htrace.NullScope;
-import org.htrace.TimelineAnnotation;
-import org.htrace.TraceScope;
-
 /**
  * This is a wrapper for a TraceScope object, which is a wrapper for a Span and its parent. Not recommended for client use.
  */
-public class Span implements org.htrace.Span {
+public class Span implements org.apache.htrace.Span {
   public static final Span NULL_SPAN = new Span(NullScope.INSTANCE);
   private TraceScope scope = null;
-  protected org.htrace.Span span = null;
+  protected org.apache.htrace.Span span = null;
 
   public Span(TraceScope scope) {
     this.scope = scope;
     this.span = scope.getSpan();
   }
 
-  public Span(org.htrace.Span span) {
+  public Span(org.apache.htrace.Span span) {
     this.span = span;
   }
 
@@ -46,7 +46,7 @@ public class Span implements org.htrace.Span {
     return scope;
   }
 
-  public org.htrace.Span getSpan() {
+  public org.apache.htrace.Span getSpan() {
     return span;
   }
 
@@ -141,6 +141,11 @@ public class Span implements org.htrace.Span {
   }
 
   @Override
+  public String toJson() {
+    return span.toJson();
+  }
+
+  @Override
   public String toString() {
     return span.toString();
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/Trace.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/Trace.java b/core/src/main/java/org/apache/accumulo/core/trace/Trace.java
index eba19ab..052c772 100644
--- a/core/src/main/java/org/apache/accumulo/core/trace/Trace.java
+++ b/core/src/main/java/org/apache/accumulo/core/trace/Trace.java
@@ -19,10 +19,10 @@ package org.apache.accumulo.core.trace;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 import org.apache.accumulo.core.trace.thrift.TInfo;
-import org.apache.accumulo.core.trace.wrappers.TraceRunnable;
-import org.htrace.Sampler;
-import org.htrace.TraceInfo;
-import org.htrace.wrappers.TraceProxy;
+import org.apache.htrace.Sampler;
+import org.apache.htrace.TraceInfo;
+import org.apache.htrace.wrappers.TraceProxy;
+import org.apache.htrace.wrappers.TraceRunnable;
 
 /**
  * Utility class for tracing within Accumulo. Not intended for client use!
@@ -40,17 +40,17 @@ public class Trace {
    * Start a trace span with a given description with the given sampler.
    */
   public static <T> Span on(String description, Sampler<T> sampler) {
-    return new Span(org.htrace.Trace.startSpan(description, sampler));
+    return new Span(org.apache.htrace.Trace.startSpan(description, sampler));
   }
 
   /**
    * Finish the current trace.
    */
   public static void off() {
-    org.htrace.Span span = org.htrace.Trace.currentSpan();
+    org.apache.htrace.Span span = org.apache.htrace.Trace.currentSpan();
     if (span != null) {
       span.stop();
-      org.htrace.Tracer.getInstance().continueSpan(null);
+      org.apache.htrace.Tracer.getInstance().continueSpan(null);
     }
   }
 
@@ -66,7 +66,7 @@ public class Trace {
    * Returns whether tracing is currently on.
    */
   public static boolean isTracing() {
-    return org.htrace.Trace.isTracing();
+    return org.apache.htrace.Trace.isTracing();
   }
 
   /**
@@ -76,21 +76,21 @@ public class Trace {
    */
   @Deprecated
   public static Span currentTrace() {
-    return new Span(org.htrace.Trace.currentSpan());
+    return new Span(org.apache.htrace.Trace.currentSpan());
   }
 
   /**
    * Get the trace id of the current span.
    */
   public static long currentTraceId() {
-    return org.htrace.Trace.currentSpan().getTraceId();
+    return org.apache.htrace.Trace.currentSpan().getTraceId();
   }
 
   /**
    * Start a new span with a given name, if already tracing.
    */
   public static Span start(String description) {
-    return new Span(org.htrace.Trace.startSpan(description));
+    return new Span(org.apache.htrace.Trace.startSpan(description));
   }
 
   /**
@@ -101,14 +101,14 @@ public class Trace {
       return Span.NULL_SPAN;
     }
     TraceInfo ti = new TraceInfo(info.traceId, info.parentId);
-    return new Span(org.htrace.Trace.startSpan(description, ti));
+    return new Span(org.apache.htrace.Trace.startSpan(description, ti));
   }
 
   /**
    * Add data to the current span.
    */
   public static void data(String k, String v) {
-    org.htrace.Span span = org.htrace.Trace.currentSpan();
+    org.apache.htrace.Span span = org.apache.htrace.Trace.currentSpan();
     if (span != null)
       span.addKVAnnotation(k.getBytes(UTF_8), v.getBytes(UTF_8));
   }
@@ -118,7 +118,7 @@ public class Trace {
    */
   public static Runnable wrap(Runnable runnable) {
     if (isTracing()) {
-      return new TraceRunnable(org.htrace.Trace.currentSpan(), runnable);
+      return new TraceRunnable(org.apache.htrace.Trace.currentSpan(), runnable);
     } else {
       return runnable;
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/Tracer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/Tracer.java b/core/src/main/java/org/apache/accumulo/core/trace/Tracer.java
index 1b42683..36895de 100644
--- a/core/src/main/java/org/apache/accumulo/core/trace/Tracer.java
+++ b/core/src/main/java/org/apache/accumulo/core/trace/Tracer.java
@@ -17,7 +17,7 @@
 package org.apache.accumulo.core.trace;
 
 import org.apache.accumulo.core.trace.thrift.TInfo;
-import org.htrace.Span;
+import org.apache.htrace.Span;
 
 public class Tracer {
   private static final TInfo DONT_TRACE = new TInfo(0, 0);
@@ -26,7 +26,7 @@ public class Tracer {
    * Obtain {@link org.apache.accumulo.core.trace.thrift.TInfo} for the current span.
    */
   public static TInfo traceInfo() {
-    Span span = org.htrace.Trace.currentSpan();
+    Span span = org.apache.htrace.Trace.currentSpan();
     if (span != null) {
       return new TInfo(span.getTraceId(), span.getSpanId());
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceCallable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceCallable.java b/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceCallable.java
deleted file mode 100644
index f6a2841..0000000
--- a/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceCallable.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.core.trace.wrappers;
-
-import java.util.concurrent.Callable;
-
-import org.htrace.Span;
-import org.htrace.Trace;
-import org.htrace.TraceScope;
-
-/**
- * Wrap a Callable with a Span that survives a change in threads.
- *
- */
-public class TraceCallable<V> implements Callable<V> {
-  private final Callable<V> impl;
-  private final Span parent;
-  private final String description;
-
-  TraceCallable(Callable<V> impl) {
-    this(Trace.currentSpan(), impl);
-  }
-
-  TraceCallable(Span parent, Callable<V> impl) {
-    this(parent, impl, null);
-  }
-
-  TraceCallable(Span parent, Callable<V> impl, String description) {
-    this.impl = impl;
-    this.parent = parent;
-    this.description = description;
-  }
-
-  @Override
-  public V call() throws Exception {
-    if (parent != null) {
-      TraceScope chunk = Trace.startSpan(getDescription(), parent);
-      try {
-        return impl.call();
-      } finally {
-        chunk.close();
-      }
-    } else {
-      return impl.call();
-    }
-  }
-
-  public Callable<V> getImpl() {
-    return impl;
-  }
-
-  private String getDescription() {
-    return this.description == null ? Thread.currentThread().getName() : description;
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceExecutorService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceExecutorService.java b/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceExecutorService.java
deleted file mode 100644
index f2cf926..0000000
--- a/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceExecutorService.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.core.trace.wrappers;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-public class TraceExecutorService implements ExecutorService {
-
-  private final ExecutorService impl;
-
-  public TraceExecutorService(ExecutorService impl) {
-    this.impl = impl;
-  }
-
-  @Override
-  public void execute(Runnable command) {
-    impl.execute(new TraceRunnable(command));
-  }
-
-  @Override
-  public void shutdown() {
-    impl.shutdown();
-  }
-
-  @Override
-  public List<Runnable> shutdownNow() {
-    return impl.shutdownNow();
-  }
-
-  @Override
-  public boolean isShutdown() {
-    return impl.isShutdown();
-  }
-
-  @Override
-  public boolean isTerminated() {
-    return impl.isTerminated();
-  }
-
-  @Override
-  public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
-    return impl.awaitTermination(timeout, unit);
-  }
-
-  @Override
-  public <T> Future<T> submit(Callable<T> task) {
-    return impl.submit(new TraceCallable<T>(task));
-  }
-
-  @Override
-  public <T> Future<T> submit(Runnable task, T result) {
-    return impl.submit(new TraceRunnable(task), result);
-  }
-
-  @Override
-  public Future<?> submit(Runnable task) {
-    return impl.submit(new TraceRunnable(task));
-  }
-
-  private <T> Collection<? extends Callable<T>> wrapCollection(Collection<? extends Callable<T>> tasks) {
-    List<Callable<T>> result = new ArrayList<Callable<T>>();
-    for (Callable<T> task : tasks) {
-      result.add(new TraceCallable<T>(task));
-    }
-    return result;
-  }
-
-  @Override
-  public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
-    return impl.invokeAll(wrapCollection(tasks));
-  }
-
-  @Override
-  public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException {
-    return impl.invokeAll(wrapCollection(tasks), timeout, unit);
-  }
-
-  @Override
-  public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException {
-    return impl.invokeAny(wrapCollection(tasks));
-  }
-
-  @Override
-  public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException,
-      TimeoutException {
-    return impl.invokeAny(wrapCollection(tasks), timeout, unit);
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceRunnable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceRunnable.java b/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceRunnable.java
deleted file mode 100644
index 629db06..0000000
--- a/core/src/main/java/org/apache/accumulo/core/trace/wrappers/TraceRunnable.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.core.trace.wrappers;
-
-import org.htrace.Span;
-import org.htrace.Trace;
-import org.htrace.TraceScope;
-
-/**
- * Wrap a Runnable with a Span that survives a change in threads.
- *
- */
-public class TraceRunnable implements Runnable, Comparable<TraceRunnable> {
-
-  private final Span parent;
-  private final Runnable runnable;
-  private final String description;
-
-  public TraceRunnable(Runnable runnable) {
-    this(Trace.currentSpan(), runnable);
-  }
-
-  public TraceRunnable(Span parent, Runnable runnable) {
-    this(parent, runnable, null);
-  }
-
-  public TraceRunnable(Span parent, Runnable runnable, String description) {
-    this.parent = parent;
-    this.runnable = runnable;
-    this.description = description;
-  }
-
-  @Override
-  public void run() {
-    if (parent != null) {
-      TraceScope chunk = Trace.startSpan(getDescription(), parent);
-      try {
-        runnable.run();
-      } finally {
-        chunk.close();
-      }
-    } else {
-      runnable.run();
-    }
-  }
-
-  private String getDescription() {
-    return this.description == null ? Thread.currentThread().getName() : description;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (o instanceof TraceRunnable) {
-      return 0 == this.compareTo((TraceRunnable) o);
-    }
-
-    return false;
-  }
-
-  @SuppressWarnings({"rawtypes", "unchecked"})
-  @Override
-  public int compareTo(TraceRunnable o) {
-    return ((Comparable) this.runnable).compareTo(o.runnable);
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/examples/simple/pom.xml
----------------------------------------------------------------------
diff --git a/examples/simple/pom.xml b/examples/simple/pom.xml
index 649ff59..aa2f118 100644
--- a/examples/simple/pom.xml
+++ b/examples/simple/pom.xml
@@ -77,6 +77,10 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>commons-httpclient</groupId>
       <artifactId>commons-httpclient</artifactId>
       <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/TracingExample.java
----------------------------------------------------------------------
diff --git a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/TracingExample.java b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/TracingExample.java
index 2c4a8a9..6214f29 100644
--- a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/TracingExample.java
+++ b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/TracingExample.java
@@ -35,10 +35,10 @@ import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.trace.DistributedTrace;
+import org.apache.htrace.Sampler;
+import org.apache.htrace.Trace;
+import org.apache.htrace.TraceScope;
 import org.apache.log4j.Logger;
-import org.htrace.Sampler;
-import org.htrace.Trace;
-import org.htrace.TraceScope;
 
 import com.beust.jcommander.Parameter;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1629757..9ea3bee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,7 +123,7 @@
     <forkCount>1</forkCount>
     <!-- overwritten in hadoop profiles -->
     <hadoop.version>2.2.0</hadoop.version>
-    <htrace.version>3.0.4</htrace.version>
+    <htrace.version>3.1.0-incubating</htrace.version>
     <httpclient.version>3.1</httpclient.version>
     <jetty.version>9.1.5.v20140505</jetty.version>
     <maven.compiler.source>1.7</maven.compiler.source>
@@ -380,6 +380,11 @@
         <version>${hadoop.version}</version>
       </dependency>
       <dependency>
+        <groupId>org.apache.htrace</groupId>
+        <artifactId>htrace-core</artifactId>
+        <version>${htrace.version}</version>
+      </dependency>
+      <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpclient</artifactId>
         <version>4.3.1</version>
@@ -475,11 +480,6 @@
         <version>${jetty.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.htrace</groupId>
-        <artifactId>htrace-core</artifactId>
-        <version>${htrace.version}</version>
-      </dependency>
-      <dependency>
         <groupId>org.powermock</groupId>
         <artifactId>powermock-api-easymock</artifactId>
         <version>${powermock.version}</version>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/base/pom.xml
----------------------------------------------------------------------
diff --git a/server/base/pom.xml b/server/base/pom.xml
index e01da1c..fbface8 100644
--- a/server/base/pom.xml
+++ b/server/base/pom.xml
@@ -85,6 +85,10 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java b/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
index 1d4cd08..d7284eb 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
@@ -55,7 +55,6 @@ import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;
 import org.apache.accumulo.core.trace.Tracer;
-import org.apache.accumulo.core.trace.wrappers.TraceRunnable;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.core.util.LoggingRunnable;
 import org.apache.accumulo.core.util.NamingThreadFactory;
@@ -68,6 +67,7 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.Text;
+import org.apache.htrace.wrappers.TraceRunnable;
 import org.apache.thrift.TServiceClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/master/pom.xml
----------------------------------------------------------------------
diff --git a/server/master/pom.xml b/server/master/pom.xml
index dbeb429..cf92d4a 100644
--- a/server/master/pom.xml
+++ b/server/master/pom.xml
@@ -65,6 +65,10 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
index 16c317a..e40137b 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
@@ -60,7 +60,6 @@ import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.trace.Tracer;
-import org.apache.accumulo.core.trace.wrappers.TraceExecutorService;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.SimpleThreadPool;
 import org.apache.accumulo.core.util.UtilWaitThread;
@@ -81,6 +80,7 @@ import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.MapFile;
 import org.apache.hadoop.io.Text;
+import org.apache.htrace.wrappers.TraceExecutorService;
 import org.apache.log4j.Logger;
 import org.apache.thrift.TException;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/pom.xml
----------------------------------------------------------------------
diff --git a/server/tracer/pom.xml b/server/tracer/pom.xml
index b895d67..57e1df1 100644
--- a/server/tracer/pom.xml
+++ b/server/tracer/pom.xml
@@ -57,6 +57,10 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
     </dependency>
@@ -65,10 +69,6 @@
       <artifactId>zookeeper</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.htrace</groupId>
-      <artifactId>htrace-core</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
index 55378ad..59596a2 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
@@ -32,11 +32,11 @@ import java.util.concurrent.ConcurrentLinkedQueue;
 import org.apache.accumulo.core.trace.DistributedTrace;
 import org.apache.accumulo.tracer.thrift.Annotation;
 import org.apache.accumulo.tracer.thrift.RemoteSpan;
+import org.apache.htrace.HTraceConfiguration;
+import org.apache.htrace.Span;
+import org.apache.htrace.SpanReceiver;
+import org.apache.htrace.TimelineAnnotation;
 import org.apache.log4j.Logger;
-import org.htrace.HTraceConfiguration;
-import org.htrace.Span;
-import org.htrace.SpanReceiver;
-import org.htrace.TimelineAnnotation;
 
 /**
  * Deliver Span information periodically to a destination.
@@ -50,6 +50,8 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
 
   private static final Logger log = Logger.getLogger(AsyncSpanReceiver.class);
 
+  public static final String SEND_TIMER_MILLIS = "send.timer.millis";
+
   private final Map<SpanKey,Destination> clients = new HashMap<SpanKey,Destination>();
 
   protected String host = null;
@@ -64,11 +66,21 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
   Timer timer = new Timer("SpanSender", true);
   protected final AbstractQueue<RemoteSpan> sendQueue = new ConcurrentLinkedQueue<RemoteSpan>();
 
-  public AsyncSpanReceiver() {
-    this(1000);
-  }
+  // Visible for testing
+  AsyncSpanReceiver() {}
+
+  public AsyncSpanReceiver(HTraceConfiguration conf) {
+    host = conf.get(DistributedTrace.TRACE_HOST_PROPERTY, host);
+    if (host == null) {
+      try {
+        host = InetAddress.getLocalHost().getCanonicalHostName().toString();
+      } catch (UnknownHostException e) {
+        host = "unknown";
+      }
+    }
+    service = conf.get(DistributedTrace.TRACE_SERVICE_PROPERTY, service);
 
-  public AsyncSpanReceiver(long millis) {
+    int millis = conf.getInt(SEND_TIMER_MILLIS, 1000);
     timer.schedule(new TimerTask() {
       @Override
       public void run() {
@@ -158,17 +170,4 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
     }
   }
 
-  @Override
-  public void configure(HTraceConfiguration conf) {
-    host = conf.get(DistributedTrace.TRACE_HOST_PROPERTY, host);
-    if (host == null) {
-      try {
-        host = InetAddress.getLocalHost().getCanonicalHostName().toString();
-      } catch (UnknownHostException e) {
-        host = "unknown";
-      }
-    }
-    service = conf.get(DistributedTrace.TRACE_SERVICE_PROPERTY, service);
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
index c585cc1..c17d2c8 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import org.apache.accumulo.tracer.thrift.RemoteSpan;
 import org.apache.accumulo.tracer.thrift.SpanReceiver.Client;
+import org.apache.htrace.HTraceConfiguration;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TSocket;
@@ -39,12 +40,11 @@ public class SendSpansViaThrift extends AsyncSpanReceiver<String,Client> {
 
   private static final String THRIFT = "thrift://";
 
-  public SendSpansViaThrift() {
-    super();
-  }
+  // Visible for testing
+  SendSpansViaThrift() {}
 
-  public SendSpansViaThrift(long millis) {
-    super(millis);
+  public SendSpansViaThrift(HTraceConfiguration conf) {
+    super(conf);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
index e8f8056..c7682c1 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.accumulo.tracer.thrift.RemoteSpan;
-import org.htrace.Span;
+import org.apache.htrace.Span;
 
 public class SpanTree {
   final Map<Long,List<Long>> parentChildren = new HashMap<Long,List<Long>>();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
index 64fee7e..e4eb70e 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
@@ -37,7 +37,7 @@ import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.tracer.thrift.RemoteSpan;
 import org.apache.hadoop.io.Text;
-import org.htrace.Span;
+import org.apache.htrace.Span;
 
 import com.beust.jcommander.Parameter;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
index f855d9c..3e4cded 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
@@ -58,6 +58,7 @@ import org.apache.accumulo.tracer.thrift.RemoteSpan;
 import org.apache.accumulo.tracer.thrift.SpanReceiver.Iface;
 import org.apache.accumulo.tracer.thrift.SpanReceiver.Processor;
 import org.apache.hadoop.io.Text;
+import org.apache.htrace.Span;
 import org.apache.log4j.Logger;
 import org.apache.thrift.TByteArrayOutputStream;
 import org.apache.thrift.TException;
@@ -72,7 +73,6 @@ import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.Watcher.Event.EventType;
 import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.htrace.Span;
 
 public class TraceServer implements Watcher {
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/main/java/org/apache/accumulo/tracer/ZooTraceClient.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/ZooTraceClient.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/ZooTraceClient.java
index 3db77f0..1599534 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/ZooTraceClient.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/ZooTraceClient.java
@@ -30,11 +30,11 @@ import java.util.concurrent.TimeUnit;
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.trace.DistributedTrace;
 import org.apache.accumulo.fate.zookeeper.ZooReader;
+import org.apache.htrace.HTraceConfiguration;
 import org.apache.log4j.Logger;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
-import org.htrace.HTraceConfiguration;
 
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
@@ -53,15 +53,22 @@ public class ZooTraceClient extends SendSpansViaThrift implements Watcher {
   final List<String> hosts = new ArrayList<String>();
   long retryPause = 5000l;
 
-  public ZooTraceClient() {
-    super();
-  }
+  // Visible for testing
+  ZooTraceClient() {}
+
+  public ZooTraceClient(HTraceConfiguration conf) {
+    super(conf);
 
-  public ZooTraceClient(long millis) {
-    super(millis);
+    String keepers = conf.get(DistributedTrace.TRACER_ZK_HOST);
+    if (keepers == null)
+      throw new IllegalArgumentException("Must configure " + DistributedTrace.TRACER_ZK_HOST);
+    int timeout = conf.getInt(DistributedTrace.TRACER_ZK_TIMEOUT, DEFAULT_TIMEOUT);
+    zoo = new ZooReader(keepers, timeout);
+    path = conf.get(DistributedTrace.TRACER_ZK_PATH, Constants.ZTRACERS);
+    setInitialTraceHosts();
   }
 
-  // Visibile for testing
+  // Visible for testing
   protected void setRetryPause(long pause) {
     retryPause = pause;
   }
@@ -76,18 +83,6 @@ public class ZooTraceClient extends SendSpansViaThrift implements Watcher {
   }
 
   @Override
-  public void configure(HTraceConfiguration conf) {
-    super.configure(conf);
-    String keepers = conf.get(DistributedTrace.TRACER_ZK_HOST);
-    if (keepers == null)
-      throw new IllegalArgumentException("Must configure " + DistributedTrace.TRACER_ZK_HOST);
-    int timeout = conf.getInt(DistributedTrace.TRACER_ZK_TIMEOUT, DEFAULT_TIMEOUT);
-    zoo = new ZooReader(keepers, timeout);
-    path = conf.get(DistributedTrace.TRACER_ZK_PATH, Constants.ZTRACERS);
-    setInitialTraceHosts();
-  }
-
-  @Override
   public void process(WatchedEvent event) {
     log.debug("Processing event for trace server zk watch");
     try {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java b/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
index 76ed910..e389679 100644
--- a/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
+++ b/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
@@ -38,6 +38,10 @@ import org.apache.accumulo.core.trace.wrappers.TraceWrap;
 import org.apache.accumulo.tracer.thrift.TestService;
 import org.apache.accumulo.tracer.thrift.TestService.Iface;
 import org.apache.accumulo.tracer.thrift.TestService.Processor;
+import org.apache.htrace.HTraceConfiguration;
+import org.apache.htrace.Sampler;
+import org.apache.htrace.SpanReceiver;
+import org.apache.htrace.wrappers.TraceProxy;
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.server.TServer;
@@ -45,10 +49,6 @@ import org.apache.thrift.server.TThreadPoolServer;
 import org.apache.thrift.transport.TServerSocket;
 import org.apache.thrift.transport.TSocket;
 import org.apache.thrift.transport.TTransport;
-import org.htrace.HTraceConfiguration;
-import org.htrace.Sampler;
-import org.htrace.SpanReceiver;
-import org.htrace.wrappers.TraceProxy;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -81,8 +81,12 @@ public class TracerTest {
   static class TestReceiver implements SpanReceiver {
     public Map<Long,List<SpanStruct>> traces = new HashMap<Long,List<SpanStruct>>();
 
+    public TestReceiver() {}
+
+    public TestReceiver(HTraceConfiguration conf) {}
+
     @Override
-    public void receiveSpan(org.htrace.Span s) {
+    public void receiveSpan(org.apache.htrace.Span s) {
       long traceId = s.getTraceId();
       SpanStruct span = new SpanStruct(traceId, s.getSpanId(), s.getParentId(), s.getStartTimeMillis(), s.getStopTimeMillis(), s.getDescription(),
           s.getKVAnnotations());
@@ -92,9 +96,6 @@ public class TracerTest {
     }
 
     @Override
-    public void configure(HTraceConfiguration conf) {}
-
-    @Override
     public void close() throws IOException {}
   }
 
@@ -102,7 +103,7 @@ public class TracerTest {
   @Test
   public void testTrace() throws Exception {
     TestReceiver tracer = new TestReceiver();
-    org.htrace.Trace.addReceiver(tracer);
+    org.apache.htrace.Trace.addReceiver(tracer);
 
     assertFalse(Trace.isTracing());
     Trace.start("nop").stop();
@@ -160,7 +161,7 @@ public class TracerTest {
   @Test
   public void testThrift() throws Exception {
     TestReceiver tracer = new TestReceiver();
-    org.htrace.Trace.addReceiver(tracer);
+    org.apache.htrace.Trace.addReceiver(tracer);
 
     ServerSocket socket = new ServerSocket(0);
     TServerSocket transport = new TServerSocket(socket);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tserver/pom.xml
----------------------------------------------------------------------
diff --git a/server/tserver/pom.xml b/server/tserver/pom.xml
index 96eb046..a4bc3de 100644
--- a/server/tserver/pom.xml
+++ b/server/tserver/pom.xml
@@ -81,6 +81,10 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.htrace</groupId>
+      <artifactId>htrace-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
index 0cb04a7..3ba7a5c 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
@@ -16,9 +16,12 @@
  */
 package org.apache.accumulo.tserver;
 
+import org.apache.htrace.wrappers.TraceRunnable;
+
 import java.util.AbstractQueue;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -28,14 +31,21 @@ import java.util.concurrent.TimeUnit;
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class CompactionQueue extends AbstractQueue<Runnable> implements BlockingQueue<Runnable> {
 
-  private List<Comparable> task = new LinkedList<Comparable>();
+  private List<TraceRunnable> task = new LinkedList<TraceRunnable>();
+
+  private static final Comparator<TraceRunnable> comparator = new Comparator<TraceRunnable>() {
+    @Override
+    public int compare(TraceRunnable o1, TraceRunnable o2) {
+      return ((Comparable) o1.getRunnable()).compareTo(o2.getRunnable());
+    }
+  };
 
   @Override
   public synchronized Runnable poll() {
     if (task.size() == 0)
       return null;
 
-    Comparable min = Collections.min(task);
+    TraceRunnable min = Collections.min(task, comparator);
     task.remove(min);
     return (Runnable) min;
   }
@@ -45,26 +55,26 @@ public class CompactionQueue extends AbstractQueue<Runnable> implements Blocking
     if (task.size() == 0)
       return null;
 
-    Comparable min = Collections.min(task);
+    TraceRunnable min = Collections.min(task, comparator);
     return (Runnable) min;
   }
 
   @Override
   public synchronized boolean offer(Runnable e) {
-    task.add((Comparable) e);
+    task.add((TraceRunnable) e);
     notify();
     return true;
   }
 
   @Override
   public synchronized void put(Runnable e) throws InterruptedException {
-    task.add((Comparable) e);
+    task.add((TraceRunnable) e);
     notify();
   }
 
   @Override
   public synchronized boolean offer(Runnable e, long timeout, TimeUnit unit) throws InterruptedException {
-    task.add((Comparable) e);
+    task.add((TraceRunnable) e);
     notify();
     return true;
   }
@@ -102,11 +112,11 @@ public class CompactionQueue extends AbstractQueue<Runnable> implements Blocking
 
   @Override
   public synchronized int drainTo(Collection<? super Runnable> c, int maxElements) {
-    Collections.sort(task);
+    Collections.sort(task, comparator);
 
     int num = Math.min(task.size(), maxElements);
 
-    Iterator<Comparable> iter = task.iterator();
+    Iterator<TraceRunnable> iter = task.iterator();
     for (int i = 0; i < num; i++) {
       c.add((Runnable) iter.next());
       iter.remove();
@@ -117,9 +127,9 @@ public class CompactionQueue extends AbstractQueue<Runnable> implements Blocking
 
   @Override
   public synchronized Iterator<Runnable> iterator() {
-    Collections.sort(task);
+    Collections.sort(task, comparator);
 
-    final Iterator<Comparable> iter = task.iterator();
+    final Iterator<TraceRunnable> iter = task.iterator();
 
     return new Iterator<Runnable>() {
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
index 351d526..67e5652 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
@@ -40,7 +40,6 @@ import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.file.blockfile.cache.LruBlockCache;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
-import org.apache.accumulo.core.trace.wrappers.TraceExecutorService;
 import org.apache.accumulo.core.util.Daemon;
 import org.apache.accumulo.core.util.LoggingRunnable;
 import org.apache.accumulo.core.util.NamingThreadFactory;
@@ -60,6 +59,7 @@ import org.apache.accumulo.tserver.compaction.DefaultCompactionStrategy;
 import org.apache.accumulo.tserver.compaction.MajorCompactionReason;
 import org.apache.accumulo.tserver.compaction.MajorCompactionRequest;
 import org.apache.accumulo.tserver.tablet.Tablet;
+import org.apache.htrace.wrappers.TraceExecutorService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/trace/pom.xml
----------------------------------------------------------------------
diff --git a/trace/pom.xml b/trace/pom.xml
index b4e4b7e..7777bb3 100644
--- a/trace/pom.xml
+++ b/trace/pom.xml
@@ -31,7 +31,7 @@
       <artifactId>accumulo-core</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.htrace</groupId>
+      <groupId>org.apache.htrace</groupId>
       <artifactId>htrace-core</artifactId>
     </dependency>
   </dependencies>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/trace/src/main/java/org/apache/accumulo/trace/instrument/CountSampler.java
----------------------------------------------------------------------
diff --git a/trace/src/main/java/org/apache/accumulo/trace/instrument/CountSampler.java b/trace/src/main/java/org/apache/accumulo/trace/instrument/CountSampler.java
index f6d256a..05d9acb 100644
--- a/trace/src/main/java/org/apache/accumulo/trace/instrument/CountSampler.java
+++ b/trace/src/main/java/org/apache/accumulo/trace/instrument/CountSampler.java
@@ -16,13 +16,17 @@
  */
 package org.apache.accumulo.trace.instrument;
 
+import org.apache.htrace.HTraceConfiguration;
+
+import java.util.Collections;
+
 /**
  * @deprecated since 1.7, use org.htrace.impl.CountSampler instead
  */
 @Deprecated
-public class CountSampler extends org.htrace.impl.CountSampler implements Sampler {
+public class CountSampler extends org.apache.htrace.impl.CountSampler implements Sampler {
   public CountSampler(long frequency) {
-    super(frequency);
+    super(HTraceConfiguration.fromMap(Collections.singletonMap(CountSampler.SAMPLER_FREQUENCY_CONF_KEY, Long.toString(frequency))));
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/trace/src/main/java/org/apache/accumulo/trace/instrument/Sampler.java
----------------------------------------------------------------------
diff --git a/trace/src/main/java/org/apache/accumulo/trace/instrument/Sampler.java b/trace/src/main/java/org/apache/accumulo/trace/instrument/Sampler.java
index 9563f8f..b82d72f 100644
--- a/trace/src/main/java/org/apache/accumulo/trace/instrument/Sampler.java
+++ b/trace/src/main/java/org/apache/accumulo/trace/instrument/Sampler.java
@@ -20,7 +20,7 @@ package org.apache.accumulo.trace.instrument;
  * @deprecated since 1.7, use org.htrace.Sampler instead
  */
 @Deprecated
-public interface Sampler extends org.htrace.Sampler<Object> {
+public interface Sampler extends org.apache.htrace.Sampler<Object> {
 
   boolean next();
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/trace/src/main/java/org/apache/accumulo/trace/instrument/Span.java
----------------------------------------------------------------------
diff --git a/trace/src/main/java/org/apache/accumulo/trace/instrument/Span.java b/trace/src/main/java/org/apache/accumulo/trace/instrument/Span.java
index dbd8882..9104d5f 100644
--- a/trace/src/main/java/org/apache/accumulo/trace/instrument/Span.java
+++ b/trace/src/main/java/org/apache/accumulo/trace/instrument/Span.java
@@ -27,17 +27,17 @@ import java.util.Map.Entry;
  */
 @Deprecated
 public class Span extends org.apache.accumulo.core.trace.Span implements CloudtraceSpan {
-  public static final long ROOT_SPAN_ID = org.htrace.Span.ROOT_SPAN_ID;
+  public static final long ROOT_SPAN_ID = org.apache.htrace.Span.ROOT_SPAN_ID;
 
   public Span(org.apache.accumulo.core.trace.Span span) {
     super(span.getScope());
   }
 
-  public Span(org.htrace.TraceScope scope) {
+  public Span(org.apache.htrace.TraceScope scope) {
     super(scope);
   }
 
-  public Span(org.htrace.Span span) {
+  public Span(org.apache.htrace.Span span) {
     super(span);
   }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/7e659af1/trace/src/main/java/org/apache/accumulo/trace/instrument/Trace.java
----------------------------------------------------------------------
diff --git a/trace/src/main/java/org/apache/accumulo/trace/instrument/Trace.java b/trace/src/main/java/org/apache/accumulo/trace/instrument/Trace.java
index 557d381..0d4b0cc 100644
--- a/trace/src/main/java/org/apache/accumulo/trace/instrument/Trace.java
+++ b/trace/src/main/java/org/apache/accumulo/trace/instrument/Trace.java
@@ -42,7 +42,7 @@ public class Trace extends org.apache.accumulo.core.trace.Trace {
 
   // If we are tracing, return the current span, else null
   public static Span currentTrace() {
-    return new Span(org.htrace.Trace.currentSpan());
+    return new Span(org.apache.htrace.Trace.currentSpan());
   }
 
   // Create a new time span, if tracing is on
@@ -57,14 +57,14 @@ public class Trace extends org.apache.accumulo.core.trace.Trace {
 
   // Initiate a trace in this thread, starting now
   public static Span startThread(Span parent, String description) {
-    return new Span(org.htrace.Trace.startSpan(description, parent.getSpan()));
+    return new Span(org.apache.htrace.Trace.startSpan(description, parent.getSpan()));
   }
 
   // Stop a trace in this thread, starting now
   public static void endThread(Span span) {
     if (span != null) {
       span.stop();
-      org.htrace.Tracer.getInstance().continueSpan(null);
+      org.apache.htrace.Tracer.getInstance().continueSpan(null);
     }
   }