Repository: incubator-htrace Updated Branches: refs/heads/master c7f645c3c -> 5c0a712c7
HTRACE-118. Java API: support setting the parents of a span after the span is created (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/5c0a712c Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/5c0a712c Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/5c0a712c Branch: refs/heads/master Commit: 5c0a712c7dd4263f5e2a88d4c61a0facab25953f Parents: c7f645c Author: Colin P. Mccabe <[email protected]> Authored: Mon Mar 2 15:39:55 2015 -0800 Committer: Colin P. Mccabe <[email protected]> Committed: Mon Mar 2 15:39:55 2015 -0800 ---------------------------------------------------------------------- .../src/main/java/org/apache/htrace/Span.java | 20 ++++++++++++++++---- .../java/org/apache/htrace/impl/MilliSpan.java | 7 ++++++- .../htrace/impl/TestHBaseSpanReceiver.java | 6 ++++++ 3 files changed, 28 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/5c0a712c/htrace-core/src/main/java/org/apache/htrace/Span.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/Span.java b/htrace-core/src/main/java/org/apache/htrace/Span.java index c6ec37b..71ed872 100644 --- a/htrace-core/src/main/java/org/apache/htrace/Span.java +++ b/htrace-core/src/main/java/org/apache/htrace/Span.java @@ -30,8 +30,9 @@ import java.util.Map; * Base interface for gathering and reporting statistics about a block of * execution. * <p/> - * Spans form a tree structure with the parent relationship. The first span in a - * trace has no parent span. + * Spans should form a directed acyclic graph structure. It should be possible + * to keep following the parents of a span until you arrive at a span with no + * parents.<p/> */ @JsonSerialize(using = Span.SpanSerializer.class) public interface Span { @@ -67,7 +68,10 @@ public interface Span { String getDescription(); /** - * A pseudo-unique (random) number assigned to this span instance + * A pseudo-unique (random) number assigned to this span instance.<p/> + * + * The spanId is immutable and cannot be changed. It is safe to access this + * from multiple threads. */ long getSpanId(); @@ -86,12 +90,20 @@ public interface Span { String toString(); /** - * Returns the parents of the span. + * Returns the parent IDs of the span.<p/> + * * The array will be empty if there are no parents. */ long[] getParents(); /** + * Set the parents of this span.<p/> + * + * Any existing parents will be cleared by this call. + */ + void setParents(long[] parents); + + /** * Add a data annotation associated with this span */ void addKVAnnotation(String key, String value); http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/5c0a712c/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java ---------------------------------------------------------------------- diff --git a/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java b/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java index 9babfc1..9956ddb 100644 --- a/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java +++ b/htrace-core/src/main/java/org/apache/htrace/impl/MilliSpan.java @@ -54,7 +54,7 @@ public class MilliSpan implements Span { private long end; private final String description; private final long traceId; - private final long parents[]; + private long parents[]; private final long spanId; private Map<String, String> traceInfo = null; private final String processId; @@ -220,6 +220,11 @@ public class MilliSpan implements Span { } @Override + public void setParents(long[] parents) { + this.parents = parents; + } + + @Override public long getTraceId() { return traceId; } http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/5c0a712c/htrace-hbase/src/test/java/org/apache/htrace/impl/TestHBaseSpanReceiver.java ---------------------------------------------------------------------- diff --git a/htrace-hbase/src/test/java/org/apache/htrace/impl/TestHBaseSpanReceiver.java b/htrace-hbase/src/test/java/org/apache/htrace/impl/TestHBaseSpanReceiver.java index 79d6e9b..7bf7bac 100644 --- a/htrace-hbase/src/test/java/org/apache/htrace/impl/TestHBaseSpanReceiver.java +++ b/htrace-hbase/src/test/java/org/apache/htrace/impl/TestHBaseSpanReceiver.java @@ -20,6 +20,7 @@ package org.apache.htrace.impl; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.lang.UnsupportedOperationException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -155,6 +156,11 @@ public class TestHBaseSpanReceiver { } @Override + public void setParents(long[] parents) { + throw new UnsupportedOperationException(); + } + + @Override public long getStartTimeMillis() { return span.getStart(); }
