From 947fed4865feb680cb455d51f882a9bd913d5566 Mon Sep 17 00:00:00 2001 From: wusheng Date: Mon, 26 Jun 2017 23:43:18 +0800 Subject: [PATCH] Begin to refactor for performance. --- .../persistence/SpanSearchWithIdTestCase.java | 1 - .../agent/core/client/CollectorClient.java | 1 - .../core/context/AbstractTracerContext.java | 7 +- .../agent/core/context/ContextCarrier.java | 1 - .../apm/agent/core/context/TracerContext.java | 2 - .../agent/core/context/TracingContext.java | 100 +++++ .../agent/core/context/tag/AbstractTag.java | 1 - .../core/context/trace/AbstractSpan.java | 75 +++- .../context/trace/AbstractTracingSpan.java | 43 ++ .../agent/core/context/trace/EntrySpan.java | 69 +++ .../agent/core/context/trace/ExitSpan.java | 67 +++ .../agent/core/context/trace/LeafSpan.java | 106 ----- .../agent/core/context/trace/LocalSpan.java | 37 ++ .../apm/agent/core/context/trace/LogData.java | 41 -- .../core/context/trace/LogDataEntity.java | 42 ++ .../agent/core/context/trace/NoopSpan.java | 63 +-- .../core/context/trace/SegmentsMessage.java | 48 -- .../apm/agent/core/context/trace/Span.java | 416 ------------------ .../agent/core/context/trace/SpanType.java | 10 + .../core/context/trace/TraceSegment.java | 51 +-- .../core/context/trace/TraceSegmentRef.java | 21 - .../agent/core/context/util/KeyValuePair.java | 24 + .../dictionary/ApplicationDictionary.java | 14 + .../core/dictionary/DictionaryManager.java | 13 + .../core/context/trace/LeafSpanTestCase.java | 1 - .../core/context/trace/SpanTestCase.java | 3 - .../context/trace/TraceSegmentTestCase.java | 2 +- .../apm/agent/core/tags/BooleanTagReader.java | 1 - .../apm/agent/core/tags/IntTagReader.java | 1 - .../apm/agent/core/tags/StringTagReader.java | 1 - apm-sniffer/apm-agent/pom.xml | 1 - .../plugin/dubbo/DubboInterceptorTest.java | 2 - .../http/v9/DefaultHttpClientInterceptor.java | 1 - .../v9/DefaultHttpClientInterceptorTest.java | 1 - .../v4/HttpClientExecuteInterceptorTest.java | 2 - .../plugin/jdbc/CallableStatementTracing.java | 1 - .../apm/plugin/jdbc/ConnectionTracing.java | 1 - .../plugin/jdbc/PreparedStatementTracing.java | 1 - .../apm/plugin/jdbc/StatementTracing.java | 1 - .../plugin/jdbc/AbstractStatementTest.java | 2 - .../plugin/jdbc/SWCallableStatementTest.java | 3 - .../apm/plugin/jdbc/SWStatementTest.java | 2 - .../plugin/jdbc/SwPreparedStatementTest.java | 2 - .../jedis/v2/JedisMethodInterceptorTest.java | 3 - .../v3/MongoDBMethodInterceptorTest.java | 2 - .../v3/MongoDBWriteMethodInterceptorTest.java | 2 - .../motan/MotanConsumerInterceptorTest.java | 2 - .../motan/MotanProviderInterceptorTest.java | 2 - .../plugin/okhttp/v3/RealCallInterceptor.java | 1 - .../okhttp/v3/RealCallInterceptorTest.java | 1 - .../resin/v3/ResinV3InterceptorTest.java | 2 - .../resin/v4/ResinV4InterceptorTest.java | 2 - .../tomcat78x/TomcatInterceptorTest.java | 2 - .../apm/sniffer/mock/trace/SpanLogReader.java | 2 - .../mock/trace/tags/BooleanTagReader.java | 1 - .../sniffer/mock/trace/tags/IntTagReader.java | 1 - .../mock/trace/tags/StringTagReader.java | 1 - pom.xml | 6 - 58 files changed, 517 insertions(+), 795 deletions(-) create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java delete mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LeafSpan.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LocalSpan.java delete mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogData.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogDataEntity.java delete mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SegmentsMessage.java delete mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/Span.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SpanType.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/util/KeyValuePair.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/ApplicationDictionary.java create mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/DictionaryManager.java diff --git a/apm-collector/apm-collector-worker/src/test/java/org/skywalking/apm/collector/worker/span/persistence/SpanSearchWithIdTestCase.java b/apm-collector/apm-collector-worker/src/test/java/org/skywalking/apm/collector/worker/span/persistence/SpanSearchWithIdTestCase.java index f6969cf53..90bbf94e6 100644 --- a/apm-collector/apm-collector-worker/src/test/java/org/skywalking/apm/collector/worker/span/persistence/SpanSearchWithIdTestCase.java +++ b/apm-collector/apm-collector-worker/src/test/java/org/skywalking/apm/collector/worker/span/persistence/SpanSearchWithIdTestCase.java @@ -18,7 +18,6 @@ import org.skywalking.apm.collector.worker.Const; import org.skywalking.apm.collector.worker.segment.SegmentIndex; import org.skywalking.apm.collector.worker.segment.mock.SegmentMock; import org.skywalking.apm.collector.worker.storage.GetResponseFromEs; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import java.util.TimeZone; diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/client/CollectorClient.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/client/CollectorClient.java index 6b5fc05fa..11fa6d713 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/client/CollectorClient.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/client/CollectorClient.java @@ -10,7 +10,6 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.conf.Config; -import org.skywalking.apm.agent.core.context.trace.SegmentsMessage; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.queue.TraceSegmentProcessQueue; import org.skywalking.apm.logging.ILog; diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/AbstractTracerContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/AbstractTracerContext.java index 1adc79002..4b1c19bde 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/AbstractTracerContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/AbstractTracerContext.java @@ -1,6 +1,7 @@ package org.skywalking.apm.agent.core.context; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.SpanType; /** * The AbstractTracerContext represents the tracer context manager. @@ -14,15 +15,11 @@ public interface AbstractTracerContext { String getGlobalTraceId(); - AbstractSpan createSpan(String operationName, boolean isLeaf); - - AbstractSpan createSpan(String operationName, long startTime, boolean isLeaf); + AbstractSpan createSpan(String operationName, SpanType spanType); AbstractSpan activeSpan(); void stopSpan(AbstractSpan span); - void stopSpan(AbstractSpan span, Long endTime); - void dispose(); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java index a8fb8dfb8..25d576f8e 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextCarrier.java @@ -5,7 +5,6 @@ import java.util.LinkedList; import java.util.List; import org.skywalking.apm.agent.core.context.ids.DistributedTraceId; import org.skywalking.apm.agent.core.context.ids.PropagatedTraceId; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.util.StringUtil; diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracerContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracerContext.java index be3aebd4e..bfd85ec22 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracerContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracerContext.java @@ -5,8 +5,6 @@ import java.util.List; import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.conf.Config; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.LeafSpan; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.sampling.SamplingService; diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java new file mode 100644 index 000000000..c06ddd157 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java @@ -0,0 +1,100 @@ +package org.skywalking.apm.agent.core.context; + +import java.util.LinkedList; +import org.skywalking.apm.agent.core.boot.ServiceManager; +import org.skywalking.apm.agent.core.conf.Config; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; +import org.skywalking.apm.agent.core.context.trace.SpanType; +import org.skywalking.apm.agent.core.context.trace.TraceSegment; +import org.skywalking.apm.agent.core.dictionary.DictionaryManager; +import org.skywalking.apm.agent.core.sampling.SamplingService; + +/** + * @author wusheng + */ +public class TracingContext implements AbstractTracerContext { + private SamplingService samplingService; + + private TraceSegment segment; + + /** + * Active spans stored in a Stack, usually called 'ActiveSpanStack'. + * This {@link LinkedList} is the in-memory storage-structure. + *

+ * I use {@link LinkedList#removeLast()}, {@link LinkedList#addLast(Object)} and {@link LinkedList#last} instead of + * {@link #pop()}, {@link #push(AbstractTracingSpan)}, {@link #peek()} + */ + private LinkedList activeSpanStack = new LinkedList(); + + private int spanIdGenerator; + + TracingContext() { + this.segment = new TraceSegment(DictionaryManager.getApplicationDictionary().findId(Config.Agent.APPLICATION_CODE)); + this.spanIdGenerator = 0; + if (samplingService == null) { + samplingService = ServiceManager.INSTANCE.findService(SamplingService.class); + } + } + + @Override + public void inject(ContextCarrier carrier) { + + } + + @Override + public void extract(ContextCarrier carrier) { + + } + + @Override + public String getGlobalTraceId() { + return null; + } + + @Override + public AbstractSpan createSpan(String operationName, SpanType spanType) { + return null; + } + + @Override + public AbstractSpan activeSpan() { + return null; + } + + @Override + public void stopSpan(AbstractSpan span) { + + } + + @Override + public void dispose() { + + } + + /** + * @return the top element of 'ActiveSpanStack', and remove it. + */ + private AbstractTracingSpan pop() { + return activeSpanStack.removeLast(); + } + + /** + * Add a new Span at the top of 'ActiveSpanStack' + * + * @param span + */ + private void push(AbstractTracingSpan span) { + activeSpanStack.addLast(span); + } + + /** + * @return the top element of 'ActiveSpanStack' only. + */ + private AbstractTracingSpan peek() { + if (activeSpanStack.isEmpty()) { + return null; + } + return activeSpanStack.getLast(); + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/AbstractTag.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/AbstractTag.java index 518e6e2ae..7c40949e5 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/AbstractTag.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/AbstractTag.java @@ -1,7 +1,6 @@ package org.skywalking.apm.agent.core.context.tag; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.Span; /** * This is the abstract tag. diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java index 73697705f..e5e936cc1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java @@ -1,6 +1,9 @@ package org.skywalking.apm.agent.core.context.trace; -import java.util.Map; +import java.util.LinkedList; +import java.util.List; +import org.skywalking.apm.agent.core.context.util.KeyValuePair; +import org.skywalking.apm.agent.core.context.util.ThrowableTransformer; /** * The AbstractSpan represents the span's skeleton, @@ -8,24 +11,70 @@ import java.util.Map; * * @author wusheng */ -public interface AbstractSpan { - AbstractSpan setOperationName(String operationName); +public abstract class AbstractSpan { + protected String operationName; + /** + * The start time of this Span. + */ + protected long startTime; + /** + * The end time of this Span. + */ + protected long endTime; - void setPeerHost(String peerHost); + /** + * Log is a concept from OpenTracing spec. + *

+ * {@see https://github.com/opentracing/specification/blob/master/specification.md#log-structured-data} + */ + protected List logs; - void setPort(int port); + protected AbstractSpan(String operationName) { + this.operationName = operationName; + } - void setPeers(String peers); + public void start() { + this.startTime = System.currentTimeMillis(); + } - AbstractSpan setTag(String key, String value); + /** + * Set a key:value tag on the Span. + * + * @return this Span instance, for chaining + */ + public abstract AbstractSpan tag(String key, String value); - AbstractSpan setTag(String key, boolean value); + /** + * Record an exception event of the current walltime timestamp. + * + * @param t any subclass of {@link Throwable}, which occurs in this span. + * @return the Span, for chaining + */ + public AbstractSpan log(Throwable t) { + if (logs == null) { + logs = new LinkedList(); + } + logs.add(new LogDataEntity.Builder() + .add(new KeyValuePair("event", "error")) + .add(new KeyValuePair("error.kind", t.getClass().getName())) + .add(new KeyValuePair("message", t.getMessage())) + .add(new KeyValuePair("stack", ThrowableTransformer.INSTANCE.convert2String(t, 4000))) + .build()); + return this; + } - AbstractSpan setTag(String key, Integer value); + /** + * @return true if the actual span is an entry span. + */ + public abstract boolean isEntry(); - AbstractSpan log(Map fields); + /** + * @return true if the actual span is a local span. + */ + public abstract boolean isLocal(); - AbstractSpan log(Throwable t); - - AbstractSpan log(String event); + /** + * @return true if the actual span is an exit span. + */ + public abstract boolean isExit(); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java new file mode 100644 index 000000000..858593559 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java @@ -0,0 +1,43 @@ +package org.skywalking.apm.agent.core.context.trace; + +import java.util.LinkedList; +import java.util.List; +import org.skywalking.apm.agent.core.context.util.KeyValuePair; + +/** + * The AbstractTracingSpan represents a group of {@link AbstractSpan} implementations, + * which belongs a real distributed trace. + * + * @author wusheng + */ +public abstract class AbstractTracingSpan extends AbstractSpan { + protected int spanId; + protected int parentSpanId; + protected List tags; + + protected AbstractTracingSpan(int spanId, int parentSpanId, String operationName) { + super(operationName); + this.spanId = spanId; + this.parentSpanId = parentSpanId; + } + + @Override + public AbstractTracingSpan tag(String key, String value) { + if (tags == null) { + tags = new LinkedList(); + } + tags.add(new KeyValuePair(key, value)); + return this; + } + + /** + * Finish the active Span. + * When it is finished, it will be archived by the given {@link TraceSegment}, which owners it. + * + * @param owner of the Span. + */ + public void finish(TraceSegment owner) { + this.endTime = System.currentTimeMillis(); + owner.archive(this); + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java new file mode 100644 index 000000000..204b3cd1b --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java @@ -0,0 +1,69 @@ +package org.skywalking.apm.agent.core.context.trace; + +/** + * The EntrySpan represents a service provider point, such as Tomcat server entrance. + * + * It is a start point of {@link TraceSegment}, even in a complex application, there maybe have multi entry point, + * the EntrySpan only represents the first one. + * + * But with the last EntrySpan's tags and logs, which have more details about a service provider. + * + * @author wusheng + */ +public class EntrySpan extends AbstractTracingSpan { + private int stackDepth; + + public EntrySpan(int spanId, int parentSpanId, String operationName) { + super(spanId, parentSpanId, operationName); + this.stackDepth = 0; + } + + /** + * Set the {@link #startTime}, when the first start, which means the first service provided. + */ + @Override + public void start() { + if (++stackDepth == 1) { + super.start(); + } + clearWhenRestart(); + } + + @Override + public EntrySpan tag(String key, String value) { + if (stackDepth == 1) { + super.tag(key, value); + } + return this; + } + + @Override + public void finish(TraceSegment owner) { + if (--stackDepth == 0) { + super.finish(owner); + } + } + + @Override + public EntrySpan log(Throwable t) { + super.log(t); + return this; + } + + @Override public boolean isEntry() { + return true; + } + + @Override public boolean isLocal() { + return false; + } + + @Override public boolean isExit() { + return false; + } + + private void clearWhenRestart() { + this.logs = null; + this.tags = null; + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java new file mode 100644 index 000000000..e9d554580 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java @@ -0,0 +1,67 @@ +package org.skywalking.apm.agent.core.context.trace; + +/** + * The ExitSpan represents a service consumer point, such as Feign, Okhttp client for a Http service. + * + * It is an exit point or a leaf span(our old name) of trace tree. + * In a single rpc call, because of a combination of client libs, there maybe contain multi exit point. + * + * The ExitSpan only presents the first one. + * + * @author wusheng + */ +public class ExitSpan extends AbstractTracingSpan { + private int stackDepth; + private String peerPoint; + + public ExitSpan(int spanId, int parentSpanId, String operationName, String peerPoint) { + super(spanId, parentSpanId, operationName); + this.stackDepth = 0; + this.peerPoint = peerPoint; + } + + /** + * Set the {@link #startTime}, when the first start, which means the first service provided. + */ + @Override + public void start() { + if (++stackDepth == 1) { + super.start(); + } + } + + @Override + public ExitSpan tag(String key, String value) { + if (stackDepth == 1) { + super.tag(key, value); + } + return this; + } + + @Override + public void finish(TraceSegment owner) { + if (--stackDepth == 0) { + super.finish(owner); + } + } + + @Override + public ExitSpan log(Throwable t) { + if (stackDepth == 1) { + super.log(t); + } + return this; + } + + @Override public boolean isEntry() { + return false; + } + + @Override public boolean isLocal() { + return false; + } + + @Override public boolean isExit() { + return true; + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LeafSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LeafSpan.java deleted file mode 100644 index 0d102e952..000000000 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LeafSpan.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.skywalking.apm.agent.core.context.trace; - - -/** - * LeafSpan is a special type of {@link Span} - * - * In rpc-client tracing scenario, one component could constitute by many other rpc-client. - * e.g Feign constitutes by okhttp, apache httpclient, etc. - * - * By having leaf concept, no need so many spans for single rpc call. - * - * @author wusheng - */ -public class LeafSpan extends Span { - private int stackDepth = 0; - - /** - * Create a new span, by given span id and give startTime but no parent span id, - * No parent span id means that, this Span is the first span of the {@link TraceSegment} - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param operationName {@link #operationName} - * @param startTime given start time of span - */ - public LeafSpan(int spanId, String operationName, long startTime) { - super(spanId, -1, operationName, startTime); - } - - /** - * Create a new span, by given span id, parent span, operationName and startTime. - * This span must belong a {@link TraceSegment}, also is a part of Distributed Trace. - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param parentSpan {@link Span} - * @param operationName {@link #operationName} - * @param startTime given start timestamp - */ - public LeafSpan(int spanId, Span parentSpan, String operationName, long startTime) { - super(spanId, parentSpan.getSpanId(), operationName, startTime); - } - - public void push() { - stackDepth++; - } - - public void pop() { - stackDepth--; - } - - public boolean isFinished() { - return stackDepth == 0; - } - - @Override - public boolean isLeaf() { - return true; - } - - private boolean isInOwnerContext() { - return stackDepth == 1; - } - - /** - * Sets the string name for the logical operation this span represents, - * only when this is in context of the leaf span owner. - * - * @return this Span instance, for chaining - */ - @Override - public Span setOperationName(String operationName) { - if (isInOwnerContext()) { - super.setOperationName(operationName); - } - return this; - } - - /** - * Set a key:value tag on the Span, - * only when this is in context of the leaf span owner. - * - * @return this Span instance, for chaining - */ - @Override - public final Span setTag(String key, String value) { - if (isInOwnerContext()) { - super.setTag(key, value); - } - return this; - } - - @Override - public final Span setTag(String key, boolean value) { - if (isInOwnerContext()) { - super.setTag(key, value); - } - return this; - } - - @Override - public final Span setTag(String key, Integer value) { - if (isInOwnerContext()) { - super.setTag(key, value); - } - return this; - } -} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LocalSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LocalSpan.java new file mode 100644 index 000000000..83cddb4c0 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LocalSpan.java @@ -0,0 +1,37 @@ +package org.skywalking.apm.agent.core.context.trace; + +/** + * The LocalSpan represents a normal tracing point, such as a local method. + * + * @author wusheng + */ +public class LocalSpan extends AbstractTracingSpan { + + public LocalSpan(int spanId, int parentSpanId, String operationName) { + super(spanId, parentSpanId, operationName); + } + + @Override + public LocalSpan tag(String key, String value) { + super.tag(key, value); + return this; + } + + @Override + public LocalSpan log(Throwable t) { + super.log(t); + return this; + } + + @Override public boolean isEntry() { + return false; + } + + @Override public boolean isLocal() { + return true; + } + + @Override public boolean isExit() { + return false; + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogData.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogData.java deleted file mode 100644 index 3e9fd6b01..000000000 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogData.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.skywalking.apm.agent.core.context.trace; - -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; -import java.util.Collections; -import java.util.Map; - -/** - * It is a holder of one log record. - *

- * Created by wusheng on 2017/2/17. - */ -public class LogData { - @Expose - @SerializedName(value = "tm") - private long time; - - @Expose - @SerializedName(value = "fi") - private Map fields; - - LogData(long time, Map fields) { - this.time = time; - if (fields == null) { - throw new NullPointerException(); - } - this.fields = fields; - } - - public LogData() { - } - - public long getTime() { - return time; - } - - public Map getFields() { - return Collections.unmodifiableMap(fields); - } - -} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogDataEntity.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogDataEntity.java new file mode 100644 index 000000000..6a1eedb97 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/LogDataEntity.java @@ -0,0 +1,42 @@ +package org.skywalking.apm.agent.core.context.trace; + +import java.util.LinkedList; +import java.util.List; +import org.skywalking.apm.agent.core.context.util.KeyValuePair; + +/** + * The LogDataEntity represents a collection of {@link KeyValuePair}, + * contains several fields of a logging operation. + * + * @author wusheng + */ +public class LogDataEntity { + protected List logs; + + private LogDataEntity(List logs) { + this.logs = logs; + } + + public List getLogs() { + return logs; + } + + public static class Builder { + protected List logs; + + public Builder() { + logs = new LinkedList(); + } + + public Builder add(KeyValuePair... fields){ + for (KeyValuePair field : fields) { + logs.add(field); + } + return this; + } + + public LogDataEntity build(){ + return new LogDataEntity(logs); + } + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java index 459951086..7e538bb62 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java @@ -1,6 +1,5 @@ package org.skywalking.apm.agent.core.context.trace; -import java.util.Map; import org.skywalking.apm.agent.core.context.IgnoredTracerContext; /** @@ -9,55 +8,39 @@ import org.skywalking.apm.agent.core.context.IgnoredTracerContext; * * @author wusheng */ -public class NoopSpan implements AbstractSpan { - @Override - public AbstractSpan setOperationName(String operationName) { - return this; +public class NoopSpan extends AbstractSpan { + public NoopSpan() { + super(null); } @Override - public void setPeerHost(String peerHost) { - - } - - @Override - public void setPort(int port) { - - } - - @Override - public void setPeers(String peers) { - - } - - @Override - public AbstractSpan setTag(String key, String value) { - return this; - } - - @Override - public AbstractSpan setTag(String key, boolean value) { - return this; - } - - @Override - public AbstractSpan setTag(String key, Integer value) { - return this; - } - - @Override - public AbstractSpan log(Map fields) { - return this; + public void start() { + super.start(); } @Override public AbstractSpan log(Throwable t) { - return this; + return super.log(t); + } + + public void finish(){ + } @Override - public AbstractSpan log(String event) { - return this; + public AbstractSpan tag(String key, String value) { + return null; } + @Override public boolean isEntry() { + return false; + } + + @Override public boolean isLocal() { + return false; + } + + @Override public boolean isExit() { + return false; + } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SegmentsMessage.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SegmentsMessage.java deleted file mode 100644 index d08fae7ce..000000000 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SegmentsMessage.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.skywalking.apm.agent.core.context.trace; - -import com.google.gson.Gson; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * The SegmentsMessage is a set of {@link TraceSegment}, - * this set provides a container, when several {@link TraceSegment}s are going to uplink to server. - * - * @author wusheng - */ -public class SegmentsMessage { - private List segments; - - public SegmentsMessage() { - segments = new LinkedList(); - } - - public void append(TraceSegment segment) { - this.segments.add(segment); - } - - public List getSegments() { - return Collections.unmodifiableList(segments); - } - - /** - * This serialization mechanism started from 3.1, it is similar to network package. - * The data protocol is - * - * segment1.json.length + ' '(one blank space) + segment1.json - * + segment2.json.length + ' '(one blank space) + segment2.json - * + etc. - * - * @param gson the serializer for {@link TraceSegment} - * @return the string represents the SegmentMessage - */ - public String serialize(Gson gson) { - StringBuilder buffer = new StringBuilder(); - for (TraceSegment segment : segments) { - String segmentJson = gson.toJson(segment); - buffer.append(segmentJson.length()).append(' ').append(segmentJson); - } - return buffer.toString(); - } -} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/Span.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/Span.java deleted file mode 100644 index 28f32f6ac..000000000 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/Span.java +++ /dev/null @@ -1,416 +0,0 @@ -package org.skywalking.apm.agent.core.context.trace; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; -import com.google.gson.TypeAdapter; -import com.google.gson.annotations.JsonAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.agent.core.context.tag.BooleanTagItem; -import org.skywalking.apm.agent.core.context.tag.IntTagItem; -import org.skywalking.apm.agent.core.context.tag.StringTagItem; -import org.skywalking.apm.agent.core.context.util.ThrowableTransformer; -import org.skywalking.apm.util.StringUtil; - -/** - * Span is a concept from OpenTracing Spec, also from Google Dapper Paper. - * Traces in OpenTracing are defined implicitly by their Spans. - *

- * Know more things about span concept: - * {@see https://github.com/opentracing/specification/blob/master/specification.md#the-opentracing-data-model} - *

- * Created by wusheng on 2017/2/17. - */ -@JsonAdapter(Span.Serializer.class) -public class Span implements AbstractSpan { - private static Gson SERIALIZATION_GSON = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - - private int spanId; - private int parentSpanId; - - /** - * The start time of this Span. - */ - private long startTime; - - /** - * The end time of this Span. - */ - private long endTime; - - /** - * The operation name ot this Span. - * If you want to know, how to set an operation name, - * {@see https://github.com/opentracing/specification/blob/master/specification.md#start-a-new-span} - */ - private String operationName; - - /** - * {@link #peerHost}, {@link #port} and {@link #peers} were part of tags, - * independence them from tags for better performance and gc. - */ - private String peerHost; - - private int port; - - private String peers; - - /** - * Tag is a concept from OpenTracing spec. - *

- * {@see https://github.com/opentracing/specification/blob/master/specification.md#set-a-span-tag} - */ - private List tagsWithStr; - - private List tagsWithBool; - - private List tagsWithInt; - - /** - * Log is a concept from OpenTracing spec. - *

- * {@see https://github.com/opentracing/specification/blob/master/specification.md#log-structured-data} - */ - private List logs; - - /** - * Create a new span, by given span id, parent span id and operationName. - * This span must belong a {@link TraceSegment}, also is a part of Distributed Trace. - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param parentSpanId given by the creator, and must be an existed span id in the {@link TraceSegment}. Value -1 - * means no parent span if this {@link TraceSegment}. - * @param operationName {@link #operationName} - */ - protected Span(int spanId, int parentSpanId, String operationName) { - this(spanId, parentSpanId, operationName, System.currentTimeMillis()); - } - - /** - * Create a new span, by given span id, parent span id, operationName and startTime. - * This span must belong a {@link TraceSegment}, also is a part of Distributed Trace. - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param parentSpanId given by the creator, and must be an existed span id in the {@link TraceSegment}. Value -1 - * means no parent span if this {@link TraceSegment}. - * @param operationName {@link #operationName} - * @param startTime given start timestamp. - */ - protected Span(int spanId, int parentSpanId, String operationName, long startTime) { - this(); - this.spanId = spanId; - this.parentSpanId = parentSpanId; - this.startTime = startTime; - this.setOperationName(operationName); - } - - /** - * Create a new span, by given span id and no parent span id. - * No parent span id means that, this Span is the first span of the {@link TraceSegment} - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param operationName {@link #operationName} - */ - public Span(int spanId, String operationName) { - this(spanId, -1, operationName); - } - - /** - * Create a new span, by given span id and give startTime but no parent span id, - * No parent span id means that, this Span is the first span of the {@link TraceSegment} - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param operationName {@link #operationName} - * @param startTime given start time of span - */ - public Span(int spanId, String operationName, long startTime) { - this(spanId, -1, operationName, startTime); - } - - /** - * Create a new span, by given span id and given parent {@link Span}. - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param parentSpan {@link Span} - * @param operationName {@link #operationName} - */ - public Span(int spanId, Span parentSpan, String operationName) { - this(spanId, parentSpan.spanId, operationName, System.currentTimeMillis()); - } - - /** - * Create a new span, by given span id, parent span, operationName and startTime. - * This span must belong a {@link TraceSegment}, also is a part of Distributed Trace. - * - * @param spanId given by the creator, and must be unique id in the {@link TraceSegment} - * @param parentSpan {@link Span} - * @param operationName {@link #operationName} - * @param startTime given start timestamp - */ - public Span(int spanId, Span parentSpan, String operationName, long startTime) { - this(spanId, parentSpan.spanId, operationName, startTime); - } - - /** - * Create a new/empty span. - */ - public Span() { - } - - /** - * Finish the active Span. - * When it is finished, it will be archived by the given {@link TraceSegment}, which owners it. - * - * @param owner of the Span. - */ - public void finish(TraceSegment owner) { - this.finish(owner, System.currentTimeMillis()); - } - - /** - * Finish the active Span. - * When it is finished, it will be archived by the given {@link TraceSegment}, which owners it. - * At the same out, set the {@link #endTime} as the given endTime - * - * @param owner of the Span. - * @param endTime of the Span. - */ - public void finish(TraceSegment owner, long endTime) { - this.endTime = endTime; - owner.archive(this); - } - - /** - * Set the string name for the logical operation this span represents. - * - * @return this Span instance, for chaining - */ - public AbstractSpan setOperationName(String operationName) { - this.operationName = operationName; - return this; - } - - /** - * Set a key:value tag on the Span. - * - * @return this Span instance, for chaining - */ - public Span setTag(String key, String value) { - if (tagsWithStr == null) { - tagsWithStr = new LinkedList(); - } - tagsWithStr.add(new StringTagItem(key, value)); - return this; - } - - public Span setTag(String key, boolean value) { - if (tagsWithBool == null) { - tagsWithBool = new LinkedList(); - } - tagsWithBool.add(new BooleanTagItem(key, value)); - return this; - } - - public Span setTag(String key, Integer value) { - if (tagsWithInt == null) { - tagsWithInt = new LinkedList(); - } - tagsWithInt.add(new IntTagItem(key, value)); - return this; - } - - /** - * This method is from opentracing-java. {@see https://github.com/opentracing/opentracing-java/blob/release-0.20.9/opentracing-api/src/main/java/io/opentracing/Span.java#L91} - *

Log key:value pairs to the Span with the current walltime timestamp.

CAUTIONARY NOTE: - * not all Tracer implementations support key:value log fields end-to-end. Caveat emptor.

A contrived example - * (using Guava, which is not required): - *

{@code
-     * span.log(
-     * ImmutableMap.Builder()
-     * .put("event", "soft error")
-     * .put("type", "cache timeout")
-     * .put("waited.millis", 1500)
-     * .build());
-     * }
- * - * @param fields key:value log fields. Tracer implementations should support String, numeric, and boolean values; - * some may also support arbitrary Objects. - * @return the Span, for chaining - * @see Span#log(String) - */ - public Span log(Map fields) { - if (logs == null) { - logs = new LinkedList(); - } - logs.add(new LogData(System.currentTimeMillis(), fields)); - return this; - } - - /** - * Record an exception event of the current walltime timestamp. - * - * @param t any subclass of {@link Throwable}, which occurs in this span. - * @return the Span, for chaining - */ - public Span log(Throwable t) { - Map exceptionFields = new HashMap(); - exceptionFields.put("event", "error"); - exceptionFields.put("error.kind", t.getClass().getName()); - exceptionFields.put("message", t.getMessage()); - exceptionFields.put("stack", ThrowableTransformer.INSTANCE.convert2String(t, 4000)); - - return log(exceptionFields); - } - - /** - * This method is from opentracing-java. {@see https://github.com/opentracing/opentracing-java/blob/release-0.20.9/opentracing-api/src/main/java/io/opentracing/Span.java#L120} - *

Record an event at the current walltime timestamp.

Shorthand for

- *

{@code
-     * span.log(Collections.singletonMap("event", event));
-     * }
- * - * @param event the event value; often a stable identifier for a moment in the Span lifecycle - * @return the Span, for chaining - */ - public Span log(String event) { - log(Collections.singletonMap("event", event)); - return this; - } - - public int getSpanId() { - return spanId; - } - - public int getParentSpanId() { - return parentSpanId; - } - - public long getStartTime() { - return startTime; - } - - public long getEndTime() { - return endTime; - } - - public String getOperationName() { - return operationName; - } - - public boolean isLeaf() { - return false; - } - - public String getPeerHost() { - return peerHost; - } - - public int getPort() { - return port; - } - - public String getPeers() { - return peers; - } - - public void setPeerHost(String peerHost) { - this.peerHost = peerHost; - } - - public void setPort(int port) { - this.port = port; - } - - public void setPeers(String peers) { - this.peers = peers; - } - - @Override - public String toString() { - return "Span{" + - "spanId=" + spanId + - ", parentSpanId=" + parentSpanId + - ", startTime=" + startTime + - ", operationName='" + operationName + '\'' + - '}'; - } - - public static class Serializer extends TypeAdapter { - @Override - public void write(JsonWriter out, Span span) throws IOException { - out.beginObject(); - out.name("si").value(span.spanId); - out.name("ps").value(span.parentSpanId); - out.name("st").value(span.startTime); - out.name("et").value(span.endTime); - out.name("on").value(span.operationName); - - this.writeTags(out, span); - - if (span.logs != null) { - out.name("logs").jsonValue(SERIALIZATION_GSON.toJson(span.logs)); - } - - out.endObject(); - } - - public void writeTags(JsonWriter out, Span span) throws IOException { - JsonObject tagWithStr = null; - JsonObject tagWithInt = null; - JsonObject tagWithBool = null; - if (!StringUtil.isEmpty(span.peerHost)) { - tagWithStr = new JsonObject(); - tagWithStr.addProperty("peer.host", span.peerHost); - tagWithInt = new JsonObject(); - tagWithInt.addProperty("peer.port", span.port); - } else if (!StringUtil.isEmpty(span.peers)) { - tagWithStr = new JsonObject(); - tagWithStr.addProperty("peers", span.peers); - } else if (span.tagsWithStr != null) { - tagWithStr = new JsonObject(); - } - - if (span.tagsWithStr != null) { - for (StringTagItem item : span.tagsWithStr) { - tagWithStr.addProperty(item.getKey(), item.getValue()); - } - } - if (span.tagsWithInt != null) { - if (tagWithInt != null) { - tagWithInt = new JsonObject(); - } - for (IntTagItem item : span.tagsWithInt) { - tagWithInt.addProperty(item.getKey(), item.getValue()); - } - } - if (span.tagsWithBool != null) { - tagWithBool = new JsonObject(); - for (BooleanTagItem item : span.tagsWithBool) { - tagWithBool.addProperty(item.getKey(), item.getValue()); - } - } - - if (tagWithStr != null) { - out.name("ts").jsonValue(tagWithStr.toString()); - } - if (tagWithInt != null) { - out.name("ti").jsonValue(tagWithInt.toString()); - } - if (tagWithBool != null) { - out.name("tb").jsonValue(tagWithBool.toString()); - } - } - - @Override - public Span read(JsonReader in) throws IOException { - throw new IOException("Can't deserialize span at agent side for performance consideration"); - } - } -} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SpanType.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SpanType.java new file mode 100644 index 000000000..ec13a4a1d --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SpanType.java @@ -0,0 +1,10 @@ +package org.skywalking.apm.agent.core.context.trace; + +/** + * @author wusheng + */ +public enum SpanType { + ENTRY, + EXIT, + LOCAL; +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java index d54f76c91..daefba54c 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java @@ -1,7 +1,5 @@ package org.skywalking.apm.agent.core.context.trace; -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -26,22 +24,16 @@ public class TraceSegment { * The id of this trace segment. * Every segment has its unique-global-id. */ - @Expose - @SerializedName(value = "ts") private String traceSegmentId; /** * The start time of this trace segment. */ - @Expose - @SerializedName(value = "st") private long startTime; /** * The end time of this trace segment. */ - @Expose - @SerializedName(value = "et") private long endTime; /** @@ -50,8 +42,6 @@ public class TraceSegment { * but if this segment is a start span of batch process, the segment faces multi parents, * at this moment, we use this {@link #refs} to link them. */ - @Expose - @SerializedName(value = "rs") private List refs; /** @@ -59,19 +49,15 @@ public class TraceSegment { * They all have finished. * All active spans are hold and controlled by "skywalking-api" module. */ - @Expose - @SerializedName(value = "ss") - private List spans; + private List spans; /** - * The applicationCode represents a name of current application/JVM and indicates which is business + * The applicationId represents a name of current application/JVM and indicates which is business * role in the cluster. *

* e.g. account_app, billing_app */ - @Expose - @SerializedName(value = "ac") - private String applicationCode; + private int applicationId; /** * The relatedGlobalTraces represent a set of all related trace. Most time it contains only one @@ -86,18 +72,16 @@ public class TraceSegment { * relatedGlobalTraces targets this {@link TraceSegment}'s related call chain, a call chain contains * multi {@link TraceSegment}s, only using {@link #refs} is not enough for analysis and ui. */ - @Expose - @SerializedName(value = "gt") private DistributedTraceIds relatedGlobalTraces; private boolean ignore = false; /** - * Create a trace segment, by the given applicationCode. + * Create a trace segment, by the given applicationId. */ - public TraceSegment(String applicationCode) { + public TraceSegment(int applicationId) { this(); - this.applicationCode = applicationCode; + this.applicationId = applicationId; } /** @@ -108,7 +92,7 @@ public class TraceSegment { public TraceSegment() { this.startTime = System.currentTimeMillis(); this.traceSegmentId = GlobalIdGenerator.generate(ID_TYPE); - this.spans = new LinkedList(); + this.spans = new LinkedList(); this.relatedGlobalTraces = new DistributedTraceIds(); this.relatedGlobalTraces.append(new NewDistributedTraceId()); } @@ -142,12 +126,12 @@ public class TraceSegment { } /** - * After {@link Span} is finished, as be controller by "skywalking-api" module, + * After {@link AbstractSpan} is finished, as be controller by "skywalking-api" module, * notify the {@link TraceSegment} to archive it. * * @param finishedSpan */ - public void archive(Span finishedSpan) { + public void archive(AbstractTracingSpan finishedSpan) { spans.add(finishedSpan); } @@ -173,13 +157,6 @@ public class TraceSegment { return endTime; } - public List getRefs() { - if (refs == null) { - return null; - } - return Collections.unmodifiableList(refs); - } - public boolean hasRef() { return !(refs == null || refs.size() == 0); } @@ -192,14 +169,6 @@ public class TraceSegment { return this.spans != null && this.spans.size() == 1; } - public List getSpans() { - return Collections.unmodifiableList(spans); - } - - public String getApplicationCode() { - return applicationCode; - } - public boolean isIgnore() { return ignore; } @@ -216,7 +185,7 @@ public class TraceSegment { ", endTime=" + endTime + ", refs=" + refs + ", spans=" + spans + - ", applicationCode='" + applicationCode + '\'' + + ", applicationId='" + applicationId + '\'' + ", relatedGlobalTraces=" + relatedGlobalTraces + '}'; } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentRef.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentRef.java index bd0ca79cb..a9e2c7c97 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentRef.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentRef.java @@ -1,9 +1,5 @@ package org.skywalking.apm.agent.core.context.trace; -import com.google.gson.annotations.Expose; -import com.google.gson.annotations.SerializedName; -import org.skywalking.apm.agent.core.context.tag.Tags; - /** * {@link TraceSegmentRef} is like a pointer, which ref to another {@link TraceSegment}, * use {@link #spanId} point to the exact span of the ref {@link TraceSegment}. @@ -14,29 +10,12 @@ public class TraceSegmentRef { /** * {@link TraceSegment#traceSegmentId} */ - @Expose - @SerializedName(value = "ts") private String traceSegmentId; - /** - * {@link Span#spanId} - */ - @Expose - @SerializedName(value = "si") private int spanId = -1; - /** - * {@link TraceSegment#applicationCode} - */ - @Expose - @SerializedName(value = "ac") private String applicationCode; - /** - * {@link Tags#PEER_HOST} - */ - @Expose - @SerializedName(value = "ph") private String peerHost; /** diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/util/KeyValuePair.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/util/KeyValuePair.java new file mode 100644 index 000000000..6ae5ebcae --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/util/KeyValuePair.java @@ -0,0 +1,24 @@ +package org.skywalking.apm.agent.core.context.util; + +/** + * The KeyValuePair represents a object which contains a string key and a string value. + * + * @author wusheng + */ +public class KeyValuePair { + private String key; + private String value; + + public KeyValuePair(String key, String value) { + this.key = key; + this.value = value; + } + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/ApplicationDictionary.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/ApplicationDictionary.java new file mode 100644 index 000000000..115c5ea2f --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/ApplicationDictionary.java @@ -0,0 +1,14 @@ +package org.skywalking.apm.agent.core.dictionary; + +/** + * Map of application id to application code, which is from the collector side. + * + * @author wusheng + */ +public enum ApplicationDictionary { + INSTANCE; + + public int findId(String applicationCode) { + + } +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/DictionaryManager.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/DictionaryManager.java new file mode 100644 index 000000000..81e581de5 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/DictionaryManager.java @@ -0,0 +1,13 @@ +package org.skywalking.apm.agent.core.dictionary; + +/** + * @author wusheng + */ +public class DictionaryManager { + /** + * @return {@link ApplicationDictionary} to find applicationId + */ + public static ApplicationDictionary getApplicationDictionary(){ + return ApplicationDictionary.INSTANCE; + } +} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LeafSpanTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LeafSpanTestCase.java index 3ceb1b83a..f79a983d0 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LeafSpanTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LeafSpanTestCase.java @@ -2,7 +2,6 @@ package org.skywalking.apm.agent.core.context.trace; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.agent.core.context.trace.LeafSpan; import org.skywalking.apm.agent.core.tags.BooleanTagReader; import org.skywalking.apm.agent.core.tags.IntTagReader; import org.skywalking.apm.agent.core.tags.StringTagReader; diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java index 8031530b3..e68e8c959 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java @@ -6,9 +6,6 @@ import org.junit.Assert; import org.junit.Test; import org.skywalking.apm.agent.core.tags.BooleanTagReader; import org.skywalking.apm.agent.core.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; /** diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java index f0ff21900..1b62dce97 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java @@ -18,7 +18,7 @@ public class TraceSegmentTestCase { Assert.assertTrue(segment.getTraceSegmentId().startsWith("Segment")); Assert.assertTrue(segment.getStartTime() > 0); - Assert.assertEquals("billing_app", segment.getApplicationCode()); + Assert.assertEquals("billing_app", segment.getApplicationId()); } @Test diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/BooleanTagReader.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/BooleanTagReader.java index f353b0c88..326e5fdc7 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/BooleanTagReader.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/BooleanTagReader.java @@ -2,7 +2,6 @@ package org.skywalking.apm.agent.core.tags; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.BooleanTag; import org.skywalking.apm.agent.core.context.tag.BooleanTagItem; diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/IntTagReader.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/IntTagReader.java index feee4eb59..6e168ec58 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/IntTagReader.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/IntTagReader.java @@ -2,7 +2,6 @@ package org.skywalking.apm.agent.core.tags; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.IntTag; import org.skywalking.apm.agent.core.context.tag.IntTagItem; diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java index fc7246e7a..d15816650 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java @@ -2,7 +2,6 @@ package org.skywalking.apm.agent.core.tags; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.StringTag; import org.skywalking.apm.agent.core.context.tag.StringTagItem; diff --git a/apm-sniffer/apm-agent/pom.xml b/apm-sniffer/apm-agent/pom.xml index 92d678ba7..d1883f511 100644 --- a/apm-sniffer/apm-agent/pom.xml +++ b/apm-sniffer/apm-agent/pom.xml @@ -148,7 +148,6 @@ org.apache.httpcomponents:* commons-logging:* commons-codec:* - *:gson diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java index 98dfe05d6..991c691c8 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java @@ -27,8 +27,6 @@ import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java index 4e658ef01..37525e8e1 100644 --- a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/main/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptor.java @@ -16,7 +16,6 @@ import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; diff --git a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/test/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/test/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptorTest.java index e9d6191cf..76425b1f0 100644 --- a/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/test/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/feign-default-http-9.x-plugin/src/test/java/org/skywalking/apm/plugin/feign/http/v9/DefaultHttpClientInterceptorTest.java @@ -22,7 +22,6 @@ import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.BooleanTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/test/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/test/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptorTest.java index 2ebf8b246..b24d549e1 100644 --- a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/test/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/test/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptorTest.java @@ -18,8 +18,6 @@ import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.tags.BooleanTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/CallableStatementTracing.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/CallableStatementTracing.java index 76b6b8eb1..f6a949093 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/CallableStatementTracing.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/CallableStatementTracing.java @@ -4,7 +4,6 @@ import java.sql.SQLException; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.util.StringUtil; /** diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/ConnectionTracing.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/ConnectionTracing.java index b20421b6b..b86c6025e 100755 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/ConnectionTracing.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/ConnectionTracing.java @@ -3,7 +3,6 @@ package org.skywalking.apm.plugin.jdbc; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.util.StringUtil; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.Tags; import java.sql.SQLException; diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/PreparedStatementTracing.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/PreparedStatementTracing.java index 4dea978ff..1b351bffa 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/PreparedStatementTracing.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/PreparedStatementTracing.java @@ -4,7 +4,6 @@ import java.sql.SQLException; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.util.StringUtil; /** diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/StatementTracing.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/StatementTracing.java index d28c09d57..dae0e1e70 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/StatementTracing.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/StatementTracing.java @@ -4,7 +4,6 @@ import java.sql.SQLException; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.util.StringUtil; /** diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/AbstractStatementTest.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/AbstractStatementTest.java index 266b1d077..c442856ba 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/AbstractStatementTest.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/AbstractStatementTest.java @@ -5,8 +5,6 @@ import java.util.List; import org.hamcrest.CoreMatchers; import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.Tags; import java.sql.SQLException; diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java index 7d00bd0f0..76f8150ff 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWCallableStatementTest.java @@ -1,7 +1,6 @@ package org.skywalking.apm.plugin.jdbc; import com.mysql.cj.api.jdbc.JdbcConnection; -import java.lang.reflect.Field; import java.util.List; import org.hamcrest.CoreMatchers; import org.junit.After; @@ -16,8 +15,6 @@ import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.context.TracerContext; import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import java.io.InputStream; diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWStatementTest.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWStatementTest.java index b42d96ea3..540b0de91 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWStatementTest.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SWStatementTest.java @@ -13,8 +13,6 @@ import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.context.TracerContext; import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import java.net.MalformedURLException; diff --git a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java index 2984ea502..7cf27a870 100644 --- a/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java +++ b/apm-sniffer/apm-sdk-plugin/jdbc-plugin/src/test/java/org/skywalking/apm/plugin/jdbc/SwPreparedStatementTest.java @@ -16,8 +16,6 @@ import org.skywalking.apm.agent.core.boot.ServiceManager; import org.skywalking.apm.agent.core.context.TracerContext; import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import java.io.InputStream; diff --git a/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/test/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/test/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptorTest.java index 2ed164853..81d57e354 100644 --- a/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/test/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/test/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptorTest.java @@ -16,10 +16,7 @@ import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceCon import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; -import org.skywalking.apm.sniffer.mock.trace.tags.BooleanTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptorTest.java index 3304f9f24..53e53881b 100644 --- a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptorTest.java @@ -23,8 +23,6 @@ import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBWriteMethodInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBWriteMethodInterceptorTest.java index 70ffcc2d9..6b306bd6d 100644 --- a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBWriteMethodInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/test/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBWriteMethodInterceptorTest.java @@ -24,8 +24,6 @@ import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptorTest.java index 1d6d6157b..4d8db8168 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptorTest.java @@ -19,8 +19,6 @@ import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java index 5906826b6..e659f7725 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java @@ -21,8 +21,6 @@ import org.skywalking.apm.sniffer.mock.context.MockTracerContextListener; import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java index fc57eaf86..3e97514e9 100644 --- a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/main/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptor.java @@ -11,7 +11,6 @@ import org.skywalking.apm.agent.core.context.ContextCarrier; import org.skywalking.apm.agent.core.context.ContextManager; import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ConstructorInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; diff --git a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/test/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/test/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptorTest.java index 329f2db3f..b94f8c5c7 100644 --- a/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/test/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/okhttp-3.x-plugin/src/test/java/org/skywalking/apm/plugin/okhttp/v3/RealCallInterceptorTest.java @@ -20,7 +20,6 @@ import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.BooleanTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java index 04284e116..68724d88d 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v3/ResinV3InterceptorTest.java @@ -20,8 +20,6 @@ import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.IntTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java index dc389b760..5e682a8eb 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/test/java/org/skywalking/apm/plugin/resin/v4/ResinV4InterceptorTest.java @@ -20,8 +20,6 @@ import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.IntTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptorTest.java index 48b7ca362..ce7fc8eca 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptorTest.java @@ -20,8 +20,6 @@ import org.skywalking.apm.sniffer.mock.context.SegmentAssert; import org.skywalking.apm.sniffer.mock.trace.SpanLogReader; import org.skywalking.apm.sniffer.mock.trace.tags.IntTagReader; import org.skywalking.apm.sniffer.mock.trace.tags.StringTagReader; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; import org.skywalking.apm.agent.core.context.tag.Tags; diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java index d1b01eff0..29bd4b7c5 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java @@ -2,8 +2,6 @@ package org.skywalking.apm.sniffer.mock.trace; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.LogData; -import org.skywalking.apm.agent.core.context.trace.Span; /** * @author wusheng diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/BooleanTagReader.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/BooleanTagReader.java index e7043f7e3..52543fc9e 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/BooleanTagReader.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/BooleanTagReader.java @@ -2,7 +2,6 @@ package org.skywalking.apm.sniffer.mock.trace.tags; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.BooleanTag; import org.skywalking.apm.agent.core.context.tag.BooleanTagItem; diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/IntTagReader.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/IntTagReader.java index 65ddb76b5..53fcc396c 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/IntTagReader.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/IntTagReader.java @@ -2,7 +2,6 @@ package org.skywalking.apm.sniffer.mock.trace.tags; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.IntTag; import org.skywalking.apm.agent.core.context.tag.IntTagItem; diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java index 5baa48fbe..d36be00d9 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java @@ -2,7 +2,6 @@ package org.skywalking.apm.sniffer.mock.trace.tags; import java.lang.reflect.Field; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.StringTag; import org.skywalking.apm.agent.core.context.tag.StringTagItem; diff --git a/pom.xml b/pom.xml index 6a9919157..8b5e3094c 100644 --- a/pom.xml +++ b/pom.xml @@ -72,12 +72,6 @@ - - com.google.code.gson - gson - 2.8.0 - - junit junit