Repository: incubator-htrace Updated Branches: refs/heads/master a0c1f0134 -> 0ddc3ea16
HTRACE-215. Simplify the Sampler type (cmccabe) Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/0ddc3ea1 Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/0ddc3ea1 Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/0ddc3ea1 Branch: refs/heads/master Commit: 0ddc3ea168862b0b900e6bf20e65ee5451f6bcfa Parents: a0c1f01 Author: Colin Patrick Mccabe <[email protected]> Authored: Fri Jul 24 18:45:16 2015 -0700 Committer: Colin Patrick Mccabe <[email protected]> Committed: Fri Jul 24 18:45:16 2015 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/htrace/Sampler.java | 31 +++++--------------- .../src/main/java/org/apache/htrace/Trace.java | 8 ++--- .../org/apache/htrace/impl/AlwaysSampler.java | 4 +-- .../org/apache/htrace/impl/CountSampler.java | 4 +-- .../org/apache/htrace/impl/NeverSampler.java | 4 +-- .../apache/htrace/impl/ProbabilitySampler.java | 4 +-- .../org/apache/htrace/wrappers/TraceProxy.java | 4 +-- .../org/apache/htrace/TestCountSampler.java | 4 +-- .../java/org/apache/htrace/TestSampler.java | 20 ------------- 9 files changed, 22 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/Sampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/Sampler.java b/htrace-core/src/main/java/org/apache/htrace/Sampler.java index 45d8872..3bf62aa 100644 --- a/htrace-core/src/main/java/org/apache/htrace/Sampler.java +++ b/htrace-core/src/main/java/org/apache/htrace/Sampler.java @@ -23,35 +23,20 @@ import org.apache.htrace.impl.NeverSampler; * Extremely simple callback to determine the frequency that an action should be * performed. * <p/> - * 'T' is the object type you require to create a more advanced sampling - * function. For example if there is some RPC information in a 'Call' object, - * you might implement Sampler<Call>. Then when the RPC is received you can call - * one of the Trace.java functions that takes the extra 'info' parameter, which - * will be passed into the next function you implemented. - * <p/> - * For the example above, the next(T info) function may look like this + * For example, the next() function may look like this: * <p/> * <pre> - * <code>public boolean next(T info) { - * if (info == null) { - * return false; - * } else if (info.getName().equals("get")) { - * return Math.random() > 0.5; - * } else if (info.getName().equals("put")) { - * return Math.random() > 0.25; - * } else { - * return false; - * } + * <code> + * public boolean next() { + * return Math.random() > 0.5; * } * </code> * </pre> * This would trace 50% of all gets, 75% of all puts and would not trace any other requests. */ -public interface Sampler<T> { - - public static final Sampler<?> ALWAYS = AlwaysSampler.INSTANCE; - public static final Sampler<?> NEVER = NeverSampler.INSTANCE; - - public boolean next(T info); +public interface Sampler { + public static final Sampler ALWAYS = AlwaysSampler.INSTANCE; + public static final Sampler NEVER = NeverSampler.INSTANCE; + public boolean next(); } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/Trace.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/Trace.java b/htrace-core/src/main/java/org/apache/htrace/Trace.java index 2d8bff5..b9def45 100644 --- a/htrace-core/src/main/java/org/apache/htrace/Trace.java +++ b/htrace-core/src/main/java/org/apache/htrace/Trace.java @@ -111,13 +111,9 @@ public class Trace { return continueSpan(parent.child(description)); } - public static <T> TraceScope startSpan(String description, Sampler<T> s) { - return startSpan(description, s, null); - } - - public static <T> TraceScope startSpan(String description, Sampler<T> s, T info) { + public static <T> TraceScope startSpan(String description, Sampler s) { Span span = null; - if (isTracing() || s.next(info)) { + if (isTracing() || s.next()) { span = Tracer.getInstance().createNew(description); } return continueSpan(span); http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/impl/AlwaysSampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/AlwaysSampler.java b/htrace-core/src/main/java/org/apache/htrace/impl/AlwaysSampler.java index 7e0bf3b..699f970 100644 --- a/htrace-core/src/main/java/org/apache/htrace/impl/AlwaysSampler.java +++ b/htrace-core/src/main/java/org/apache/htrace/impl/AlwaysSampler.java @@ -22,7 +22,7 @@ import org.apache.htrace.Sampler; /** * A Sampler that always returns true. */ -public final class AlwaysSampler implements Sampler<Object> { +public final class AlwaysSampler implements Sampler { public static final AlwaysSampler INSTANCE = new AlwaysSampler(null); @@ -30,7 +30,7 @@ public final class AlwaysSampler implements Sampler<Object> { } @Override - public boolean next(Object info) { + public boolean next() { return true; } } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java b/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java index be5063e..e59a4ba 100644 --- a/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java +++ b/htrace-core/src/main/java/org/apache/htrace/impl/CountSampler.java @@ -26,7 +26,7 @@ import java.util.concurrent.ThreadLocalRandom; * Sampler that returns true every N calls. Specify the frequency interval by configuring a * {@code long} value for {@link #SAMPLER_FREQUENCY_CONF_KEY}. */ -public class CountSampler implements Sampler<Object> { +public class CountSampler implements Sampler { public final static String SAMPLER_FREQUENCY_CONF_KEY = "sampler.frequency"; final long frequency; @@ -37,7 +37,7 @@ public class CountSampler implements Sampler<Object> { } @Override - public boolean next(Object info) { + public boolean next() { return (count++ % frequency) == 0; } } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/impl/NeverSampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/NeverSampler.java b/htrace-core/src/main/java/org/apache/htrace/impl/NeverSampler.java index c633da7..3cb3827 100644 --- a/htrace-core/src/main/java/org/apache/htrace/impl/NeverSampler.java +++ b/htrace-core/src/main/java/org/apache/htrace/impl/NeverSampler.java @@ -22,7 +22,7 @@ import org.apache.htrace.Sampler; /** * A Sampler that never returns true. */ -public final class NeverSampler implements Sampler<Object> { +public final class NeverSampler implements Sampler { public static final NeverSampler INSTANCE = new NeverSampler(null); @@ -30,7 +30,7 @@ public final class NeverSampler implements Sampler<Object> { } @Override - public boolean next(Object info) { + public boolean next() { return false; } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java b/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java index e6e4894..903e590 100644 --- a/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java +++ b/htrace-core/src/main/java/org/apache/htrace/impl/ProbabilitySampler.java @@ -28,7 +28,7 @@ import java.util.concurrent.ThreadLocalRandom; * Sampler that returns true a certain percentage of the time. Specify the frequency interval by * configuring a {@code double} value for {@link #SAMPLER_FRACTION_CONF_KEY}. */ -public class ProbabilitySampler implements Sampler<Object> { +public class ProbabilitySampler implements Sampler { private static final Log LOG = LogFactory.getLog(ProbabilitySampler.class); public final double threshold; public final static String SAMPLER_FRACTION_CONF_KEY = "sampler.fraction"; @@ -42,7 +42,7 @@ public class ProbabilitySampler implements Sampler<Object> { } @Override - public boolean next(Object info) { + public boolean next() { return ThreadLocalRandom.current().nextDouble() < threshold; } } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/main/java/org/apache/htrace/wrappers/TraceProxy.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/wrappers/TraceProxy.java b/htrace-core/src/main/java/org/apache/htrace/wrappers/TraceProxy.java index 4087417..c1aba29 100644 --- a/htrace-core/src/main/java/org/apache/htrace/wrappers/TraceProxy.java +++ b/htrace-core/src/main/java/org/apache/htrace/wrappers/TraceProxy.java @@ -36,12 +36,12 @@ public class TraceProxy { * Returns an object that will trace all calls to itself. */ @SuppressWarnings("unchecked") - public static <T, V> T trace(final T instance, final Sampler<V> sampler) { + public static <T, V> T trace(final T instance, final Sampler sampler) { InvocationHandler handler = new InvocationHandler() { @Override public Object invoke(Object obj, Method method, Object[] args) throws Throwable { - if (!sampler.next(null)) { + if (!sampler.next()) { return method.invoke(instance, args); } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/test/java/org/apache/htrace/TestCountSampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/test/java/org/apache/htrace/TestCountSampler.java b/htrace-core/src/test/java/org/apache/htrace/TestCountSampler.java index 1cc7753..42ba4e2 100644 --- a/htrace-core/src/test/java/org/apache/htrace/TestCountSampler.java +++ b/htrace-core/src/test/java/org/apache/htrace/TestCountSampler.java @@ -32,9 +32,9 @@ public class TestCountSampler { int halfCount = 0; int hundredCount = 0; for (int i = 0; i < 200; i++) { - if (half.next(null)) + if (half.next()) halfCount++; - if (hundred.next(null)) + if (hundred.next()) hundredCount++; } Assert.assertEquals(2, hundredCount); http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/0ddc3ea1/htrace-core/src/test/java/org/apache/htrace/TestSampler.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/test/java/org/apache/htrace/TestSampler.java b/htrace-core/src/test/java/org/apache/htrace/TestSampler.java index e848e5e..7ff2e31 100644 --- a/htrace-core/src/test/java/org/apache/htrace/TestSampler.java +++ b/htrace-core/src/test/java/org/apache/htrace/TestSampler.java @@ -51,29 +51,9 @@ public class TestSampler { } @Test - public void testParamterizedSampler() { - TestParamSampler sampler = new TestParamSampler(); - TraceScope s = Trace.startSpan("test", sampler, 1); - Assert.assertNotNull(s.getSpan()); - s.close(); - s = Trace.startSpan("test", sampler, -1); - Assert.assertNull(s.getSpan()); - s.close(); - } - - @Test public void testAlwaysSampler() { TraceScope cur = Trace.startSpan("test"); Assert.assertNotNull(cur); cur.close(); } - - private class TestParamSampler implements Sampler<Integer> { - - @Override - public boolean next(Integer info) { - return info > 0; - } - - } }
