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 0891fc3c39e4..1adc79002c00 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,6 @@ package org.skywalking.apm.agent.core.context; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * The AbstractTracerContext represents the tracer context manager. @@ -14,15 +14,15 @@ public interface AbstractTracerContext { String getGlobalTraceId(); - Span createSpan(String operationName, boolean isLeaf); + AbstractSpan createSpan(String operationName, boolean isLeaf); - Span createSpan(String operationName, long startTime, boolean isLeaf); + AbstractSpan createSpan(String operationName, long startTime, boolean isLeaf); - Span activeSpan(); + AbstractSpan activeSpan(); - void stopSpan(Span span); + void stopSpan(AbstractSpan span); - void stopSpan(Span span, Long endTime); + 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/ContextManager.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java index 72db942bb49b..72671097ff75 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java @@ -1,7 +1,7 @@ package org.skywalking.apm.agent.core.context; import org.skywalking.apm.agent.core.boot.BootService; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; /** @@ -12,7 +12,7 @@ * https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans} *

Also, {@link * ContextManager} delegates to all {@link TracerContext}'s major methods: {@link TracerContext#createSpan(String, - * boolean)}, {@link TracerContext#activeSpan()}, {@link TracerContext#stopSpan(Span)} + * boolean)}, {@link TracerContext#activeSpan()}, {@link AbstractTracerContext#stopSpan(org.skywalking.apm.agent.core.context.trace.AbstractSpan)} *

* * @author wusheng @@ -55,23 +55,23 @@ public static String getGlobalTraceId() { } } - public static Span createSpan(String operationName) { + public static AbstractSpan createSpan(String operationName) { return get().createSpan(operationName, false); } - public static Span createSpan(String operationName, long startTime) { + public static AbstractSpan createSpan(String operationName, long startTime) { return get().createSpan(operationName, startTime, false); } - public static Span createLeafSpan(String operationName) { + public static AbstractSpan createLeafSpan(String operationName) { return get().createSpan(operationName, true); } - public static Span createLeafSpan(String operationName, long startTime) { + public static AbstractSpan createLeafSpan(String operationName, long startTime) { return get().createSpan(operationName, startTime, true); } - public static Span activeSpan() { + public static AbstractSpan activeSpan() { return get().activeSpan(); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/IgnoreTracerContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/IgnoreTracerContext.java index 9d58786674c9..d1db8e5ff3fa 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/IgnoreTracerContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/IgnoreTracerContext.java @@ -2,7 +2,7 @@ import java.util.LinkedList; import java.util.List; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * The IgnoreTracerContext represent a context should be ignored. @@ -36,23 +36,23 @@ public String getGlobalTraceId() { } @Override - public Span createSpan(String operationName, boolean isLeaf) { + public AbstractSpan createSpan(String operationName, boolean isLeaf) { stackDepth++; return null; } @Override - public Span createSpan(String operationName, long startTime, boolean isLeaf) { + public AbstractSpan createSpan(String operationName, long startTime, boolean isLeaf) { return createSpan(operationName, isLeaf); } @Override - public Span activeSpan() { + public AbstractSpan activeSpan() { return null; } @Override - public void stopSpan(Span span) { + public void stopSpan(AbstractSpan span) { stackDepth--; if (stackDepth == 0) { @@ -60,7 +60,7 @@ public void stopSpan(Span span) { } @Override - public void stopSpan(Span span, Long endTime) { + public void stopSpan(AbstractSpan span, Long endTime) { stopSpan(span); } 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 48d086602635..19196eac2e0f 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 @@ -3,6 +3,7 @@ import java.util.LinkedList; import java.util.List; 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; @@ -42,7 +43,7 @@ public final class TracerContext implements AbstractTracerContext { * @param operationName {@link Span#operationName} * @return the new active span. */ - public Span createSpan(String operationName, boolean isLeaf) { + public AbstractSpan createSpan(String operationName, boolean isLeaf) { return this.createSpan(operationName, System.currentTimeMillis(), isLeaf); } @@ -54,7 +55,7 @@ public Span createSpan(String operationName, boolean isLeaf) { * @param isLeaf is true, if the span is a leaf in trace tree. * @return */ - public Span createSpan(String operationName, long startTime, boolean isLeaf) { + public AbstractSpan createSpan(String operationName, long startTime, boolean isLeaf) { Span parentSpan = peek(); Span span; if (parentSpan == null) { @@ -82,7 +83,7 @@ public Span createSpan(String operationName, long startTime, boolean isLeaf) { /** * @return the active span of current context. */ - public Span activeSpan() { + public AbstractSpan activeSpan() { Span span = peek(); if (span == null) { throw new IllegalStateException("No active span."); @@ -95,7 +96,7 @@ public Span activeSpan() { * * @param span to finish. It must the the top element of {@link #activeSpanStack}. */ - public void stopSpan(Span span) { + public void stopSpan(AbstractSpan span) { stopSpan(span, System.currentTimeMillis()); } @@ -106,7 +107,7 @@ public String getGlobalTraceId() { return segment.getRelatedGlobalTraces().get(0).get(); } - public void stopSpan(Span span, Long endTime) { + public void stopSpan(AbstractSpan span, Long endTime) { Span lastSpan = peek(); if (lastSpan.isLeaf()) { LeafSpan leafSpan = (LeafSpan)lastSpan; @@ -147,7 +148,7 @@ private void finish() { */ public void inject(ContextCarrier carrier) { carrier.setTraceSegmentId(this.segment.getTraceSegmentId()); - Span span = this.activeSpan(); + Span span = (Span)this.activeSpan(); carrier.setSpanId(span.getSpanId()); carrier.setApplicationCode(Config.Agent.APPLICATION_CODE); String host = span.getPeerHost(); 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 9f8fc487872b..518e6e2ae0c5 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,5 +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; /** @@ -22,7 +23,7 @@ public AbstractTag(String tagKey) { this.key = tagKey; } - protected abstract void set(Span span, T tagValue); + protected abstract void set(AbstractSpan span, T tagValue); /** * @return the key of this tag. diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/BooleanTag.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/BooleanTag.java index 429acb8bdeda..e583da561048 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/BooleanTag.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/BooleanTag.java @@ -1,6 +1,6 @@ package org.skywalking.apm.agent.core.context.tag; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * Do the same thing as {@link StringTag}, just with a {@link Boolean} value. @@ -17,7 +17,7 @@ public BooleanTag(String key, boolean defaultValue) { } @Override - public void set(Span span, Boolean tagValue) { + public void set(AbstractSpan span, Boolean tagValue) { span.setTag(key, tagValue); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/IntTag.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/IntTag.java index d2f73438b885..2b1e7e88d24a 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/IntTag.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/IntTag.java @@ -1,6 +1,6 @@ package org.skywalking.apm.agent.core.context.tag; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * Do the same thing as {@link StringTag}, just with a {@link Integer} value. @@ -13,7 +13,7 @@ public IntTag(String key) { } @Override - public void set(Span span, Integer tagValue) { + public void set(AbstractSpan span, Integer tagValue) { span.setTag(super.key, tagValue); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/StringTag.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/StringTag.java index d703120536cc..8fdc8d83c4ec 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/StringTag.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/StringTag.java @@ -1,6 +1,6 @@ package org.skywalking.apm.agent.core.context.tag; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * A subclass of {@link AbstractTag}, @@ -14,7 +14,7 @@ public StringTag(String tagKey) { } @Override - public void set(Span span, String tagValue) { + public void set(AbstractSpan span, String tagValue) { span.setTag(key, tagValue); } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/Tags.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/Tags.java index cd0fe82fb7d6..11c36a9f2651 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/Tags.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/tag/Tags.java @@ -1,6 +1,6 @@ package org.skywalking.apm.agent.core.context.tag; -import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * The span tags are supported by sky-walking engine. @@ -52,15 +52,15 @@ public static final class SPAN_LAYER { private static final String RPC_FRAMEWORK_LAYER = "rpc"; private static final String HTTP_LAYER = "http"; - public static void asDB(Span span) { + public static void asDB(AbstractSpan span) { SPAN_LAYER_TAG.set(span, DB_LAYER); } - public static void asRPCFramework(Span span) { + public static void asRPCFramework(AbstractSpan span) { SPAN_LAYER_TAG.set(span, RPC_FRAMEWORK_LAYER); } - public static void asHttp(Span span) { + public static void asHttp(AbstractSpan span) { SPAN_LAYER_TAG.set(span, HTTP_LAYER); } } 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 new file mode 100644 index 000000000000..73697705f84d --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java @@ -0,0 +1,31 @@ +package org.skywalking.apm.agent.core.context.trace; + +import java.util.Map; + +/** + * The AbstractSpan represents the span's skeleton, + * which contains all open methods. + * + * @author wusheng + */ +public interface AbstractSpan { + AbstractSpan setOperationName(String operationName); + + void setPeerHost(String peerHost); + + void setPort(int port); + + void setPeers(String peers); + + AbstractSpan setTag(String key, String value); + + AbstractSpan setTag(String key, boolean value); + + AbstractSpan setTag(String key, Integer value); + + AbstractSpan log(Map fields); + + AbstractSpan log(Throwable t); + + AbstractSpan log(String event); +} 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 index d194c609a9b3..dfb4a2523dfc 100644 --- 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 @@ -32,7 +32,7 @@ * Created by wusheng on 2017/2/17. */ @JsonAdapter(Span.Serializer.class) -public class Span { +public class Span implements AbstractSpan { private static Gson SERIALIZATION_GSON = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); private int spanId; @@ -111,7 +111,7 @@ protected Span(int spanId, int parentSpanId, String operationName, long startTim this.spanId = spanId; this.parentSpanId = parentSpanId; this.startTime = startTime; - this.operationName = operationName; + this.setOperationName(operationName); } /** @@ -192,10 +192,12 @@ public void finish(TraceSegment owner, long endTime) { /** * Sets the string name for the logical operation this span represents. + * These is one scenario, which trigger context switch. + * 1) the operations ends with the defined suffix, see {@link Config.Agent#IGNORE_SUFFIX} * * @return this Span instance, for chaining */ - public Span setOperationName(String operationName) { + public AbstractSpan setOperationName(String operationName) { this.operationName = operationName; if (this.spanId == 0) { if (operationName != null) { diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java index 244623296ec9..050fa4c877e2 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java @@ -5,9 +5,9 @@ import org.junit.BeforeClass; import org.junit.Test; import org.skywalking.apm.agent.core.boot.ServiceManager; -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; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.TraceSegment; /** * Created by wusheng on 2017/2/19. @@ -20,7 +20,7 @@ public static void setup() { @Test public void testDelegateToTracerContext() { - Span span = ContextManager.createSpan("serviceA"); + AbstractSpan span = ContextManager.createSpan("serviceA"); Tags.COMPONENT.set(span, "test"); Assert.assertEquals(span, ContextManager.activeSpan()); diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java index 35c4c3a045c6..2857a3a4656a 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java @@ -1,16 +1,16 @@ package org.skywalking.apm.agent.core.context; +import java.util.LinkedList; +import java.util.List; import org.junit.After; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.agent.core.context.trace.Span; 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.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.trace.TraceSegment; -import java.util.LinkedList; -import java.util.List; - /** * Created by wusheng on 2017/2/19. */ @@ -18,7 +18,7 @@ public class TracerContextTestCase { @Test public void testSpanLifeCycle() { TracerContext context = new TracerContext(); - Span span = context.createSpan("/serviceA", false); + AbstractSpan span = context.createSpan("/serviceA", false); Assert.assertEquals(span, context.activeSpan()); @@ -34,8 +34,8 @@ public void testSpanLifeCycle() { @Test public void testChildOfSpan() { TracerContext context = new TracerContext(); - Span serviceSpan = context.createSpan("/serviceA", false); - Span dbSpan = context.createSpan("db/preparedStatement/execute", false); + AbstractSpan serviceSpan = context.createSpan("/serviceA", false); + AbstractSpan dbSpan = context.createSpan("db/preparedStatement/execute", false); Assert.assertEquals(dbSpan, context.activeSpan()); @@ -59,8 +59,8 @@ public void testChildOfSpan() { @Test public void testInject() { TracerContext context = new TracerContext(); - Span serviceSpan = context.createSpan("/serviceA", false); - Span dbSpan = context.createSpan("db/preparedStatement/execute", false); + AbstractSpan serviceSpan = context.createSpan("/serviceA", false); + AbstractSpan dbSpan = context.createSpan("db/preparedStatement/execute", false); dbSpan.setPeerHost("127.0.0.1"); dbSpan.setPort(8080); @@ -86,7 +86,7 @@ public void testExtract() { TracerContext context = new TracerContext(); context.extract(carrier); - Span span = context.createSpan("/serviceC", false); + AbstractSpan span = context.createSpan("/serviceC", false); TracerContext.ListenerManager.add(TestTracerContextListener.INSTANCE); final TraceSegment[] finishedSegmentCarrier = TestTracerContextListener.INSTANCE.finishedSegmentCarrier; diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java index 266e99104e1f..794756148f7a 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/skywalking/apm/plugin/dubbo/DubboInterceptor.java @@ -8,14 +8,14 @@ import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.skywalking.apm.plugin.dubbox.BugFixActive; import org.skywalking.apm.plugin.dubbox.SWBaseBean; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; /** * {@link DubboInterceptor} define how to enhance class {@link com.alibaba.dubbo.monitor.support.MonitorFilter#invoke(Invoker, @@ -50,7 +50,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv boolean isConsumer = rpcContext.isConsumerSide(); URL requestURL = invoker.getUrl(); - Span span = ContextManager.createSpan(generateOperationName(requestURL, invocation)); + AbstractSpan span = ContextManager.createSpan(generateOperationName(requestURL, invocation)); Tags.URL.set(span, generateRequestURL(requestURL, invocation)); Tags.COMPONENT.set(span, DUBBO_COMPONENT); Tags.SPAN_LAYER.asRPCFramework(span); @@ -111,7 +111,7 @@ public void handleMethodException(Throwable t, EnhancedClassInstanceContext cont * Log the throwable, which occurs in Dubbo RPC service. */ private void dealException(Throwable throwable) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.ERROR.set(span, true); span.log(throwable); } 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 5ebe44b374f0..4e658ef01476 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 @@ -14,12 +14,13 @@ import org.skywalking.apm.agent.core.conf.Config; 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; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; /** * {@link DefaultHttpClientInterceptor} intercept the default implementation of http calls by the Feign. @@ -46,7 +47,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv Request request = (Request)interceptorContext.allArguments()[0]; URL url = new URL(request.url()); - Span span = ContextManager.createSpan(request.url()); + AbstractSpan span = ContextManager.createSpan(request.url()); span.setPeerHost(url.getHost()); span.setPort(url.getPort()); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); @@ -91,7 +92,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn Response response = (Response)ret; int statusCode = response.status(); - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); if (statusCode >= 400) { Tags.ERROR.set(span, true); } diff --git a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java index 25a7e78ee445..eeca193d6bb0 100644 --- a/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/apm/plugin/httpClient/v4/HttpClientExecuteInterceptor.java @@ -1,18 +1,21 @@ package org.skywalking.apm.plugin.httpClient.v4; -import org.apache.http.*; +import java.net.MalformedURLException; +import java.net.URL; +import org.apache.http.Header; +import org.apache.http.HttpHost; +import org.apache.http.HttpRequest; +import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; - -import java.net.MalformedURLException; -import java.net.URL; /** * {@link HttpClientExecuteInterceptor} transport the trace context by call {@link HttpRequest#setHeader(Header)}, @@ -33,7 +36,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, } HttpHost httpHost = (HttpHost)allArguments[0]; HttpRequest httpRequest = (HttpRequest)allArguments[1]; - Span span = createSpan(httpRequest); + AbstractSpan span = createSpan(httpRequest); span.setPeerHost(httpHost.getHostName()); span.setPort(httpHost.getPort()); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); @@ -58,8 +61,8 @@ private String generateURL(HttpRequest httpRequest) { /** * Create span. */ - private Span createSpan(HttpRequest httpRequest) { - Span span; + private AbstractSpan createSpan(HttpRequest httpRequest) { + AbstractSpan span; try { URL url = new URL(httpRequest.getRequestLine().getUri()); span = ContextManager.createSpan(url.getPath()); @@ -79,7 +82,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, HttpResponse response = (HttpResponse)ret; int statusCode = response.getStatusLine().getStatusCode(); - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); if (statusCode != 200) { Tags.ERROR.set(span, true); } 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 9e2108aae3dc..76b6b8eb1f67 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 @@ -1,11 +1,11 @@ package org.skywalking.apm.plugin.jdbc; +import java.sql.SQLException; import org.skywalking.apm.agent.core.context.ContextManager; -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; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.util.StringUtil; /** * {@link CallableStatementTracing} create span with the {@link Span#operationName} start with @@ -21,7 +21,7 @@ public static R execute(java.sql.CallableStatement realStatement, ConnectionInfo connectInfo, String method, String sql, Executable exec) throws SQLException { try { - Span span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/CallableStatement/" + method); + AbstractSpan span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/CallableStatement/" + method); Tags.DB_TYPE.set(span, "sql"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); Tags.DB_INSTANCE.set(span, connectInfo.getDatabaseName()); @@ -36,7 +36,7 @@ public static R execute(java.sql.CallableStatement realStatement, } return exec.exe(realStatement, sql); } catch (SQLException e) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.ERROR.set(span, true); span.log(e); throw e; 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 25a1ce2e3eff..b20421b6bc27 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 @@ -1,6 +1,7 @@ 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; @@ -21,7 +22,7 @@ public static R execute(java.sql.Connection realConnection, ConnectionInfo connectInfo, String method, String sql, Executable exec) throws SQLException { try { - Span span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/Connection/" + method); + AbstractSpan span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/Connection/" + method); Tags.DB_TYPE.set(span, "sql"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); Tags.DB_INSTANCE.set(span, connectInfo.getDatabaseName()); @@ -36,7 +37,7 @@ public static R execute(java.sql.Connection realConnection, } return exec.exe(realConnection, sql); } catch (SQLException e) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.ERROR.set(span, true); span.log(e); throw e; 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 0e4716daeafb..4dea978ff75c 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 @@ -1,11 +1,11 @@ package org.skywalking.apm.plugin.jdbc; +import java.sql.SQLException; import org.skywalking.apm.agent.core.context.ContextManager; -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; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.util.StringUtil; /** * {@link PreparedStatementTracing} create span with the {@link Span#operationName} start with @@ -21,7 +21,7 @@ public static R execute(java.sql.PreparedStatement realStatement, ConnectionInfo connectInfo, String method, String sql, Executable exec) throws SQLException { try { - Span span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/PreparedStatement/" + method); + AbstractSpan span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/PreparedStatement/" + method); Tags.DB_TYPE.set(span, "sql"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); Tags.DB_INSTANCE.set(span, connectInfo.getDatabaseName()); @@ -36,7 +36,7 @@ public static R execute(java.sql.PreparedStatement realStatement, Tags.SPAN_LAYER.asDB(span); return exec.exe(realStatement, sql); } catch (SQLException e) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.ERROR.set(span, true); span.log(e); throw e; 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 ad0ce9399a88..d28c09d57e5c 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 @@ -1,11 +1,11 @@ package org.skywalking.apm.plugin.jdbc; +import java.sql.SQLException; import org.skywalking.apm.agent.core.context.ContextManager; -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; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; +import org.skywalking.apm.agent.core.context.trace.Span; +import org.skywalking.apm.util.StringUtil; /** * {@link StatementTracing} create span with the {@link Span#operationName} start with @@ -20,7 +20,7 @@ public static R execute(java.sql.Statement realStatement, ConnectionInfo connectInfo, String method, String sql, Executable exec) throws SQLException { try { - Span span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/Statement/" + method); + AbstractSpan span = ContextManager.createSpan(connectInfo.getDBType() + "/JDBI/Statement/" + method); Tags.DB_TYPE.set(span, "sql"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); Tags.DB_INSTANCE.set(span, connectInfo.getDatabaseName()); @@ -35,7 +35,7 @@ public static R execute(java.sql.Statement realStatement, } return exec.exe(realStatement, sql); } catch (SQLException e) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.ERROR.set(span, true); span.log(e); throw e; diff --git a/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/main/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/main/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptor.java index a4885dcfb43e..d7c90d5fc14f 100644 --- a/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/main/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/jedis-2.x-plugin/src/main/java/org/skywalking/apm/plugin/jedis/v2/JedisMethodInterceptor.java @@ -1,13 +1,13 @@ package org.skywalking.apm.plugin.jedis.v2; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.assist.NoConcurrencyAccessObject; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.util.StringUtil; /** @@ -50,7 +50,7 @@ public void beforeMethod(final EnhancedClassInstanceContext context, /** * set peer host information for the current active span. */ - private void tagPeer(Span span, EnhancedClassInstanceContext context) { + private void tagPeer(AbstractSpan span, EnhancedClassInstanceContext context) { String redisHosts = (String)context.get(KEY_OF_REDIS_HOSTS); if (!StringUtil.isEmpty(redisHosts)) { span.setPeers((String)context.get(KEY_OF_REDIS_HOST)); @@ -78,7 +78,7 @@ public void handleMethodException(Throwable t, EnhancedClassInstanceContext cont @Override protected void enter(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { - Span span = ContextManager.createSpan("Jedis/" + interceptorContext.methodName()); + AbstractSpan span = ContextManager.createSpan("Jedis/" + interceptorContext.methodName()); Tags.COMPONENT.set(span, REDIS_COMPONENT); Tags.DB_TYPE.set(span, REDIS_COMPONENT); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); diff --git a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptor.java index 0d9928dbcdca..546b968b384f 100644 --- a/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/mongodb-3.x-plugin/src/main/java/org/skywalking/apm/plugin/mongodb/v3/MongoDBMethodInterceptor.java @@ -5,18 +5,35 @@ import com.mongodb.bulk.InsertRequest; import com.mongodb.bulk.UpdateRequest; import com.mongodb.bulk.WriteRequest; -import com.mongodb.operation.*; +import com.mongodb.operation.CountOperation; +import com.mongodb.operation.CreateCollectionOperation; +import com.mongodb.operation.CreateIndexesOperation; +import com.mongodb.operation.CreateViewOperation; +import com.mongodb.operation.DeleteOperation; +import com.mongodb.operation.DistinctOperation; +import com.mongodb.operation.FindAndDeleteOperation; +import com.mongodb.operation.FindAndReplaceOperation; +import com.mongodb.operation.FindAndUpdateOperation; +import com.mongodb.operation.FindOperation; +import com.mongodb.operation.GroupOperation; +import com.mongodb.operation.InsertOperation; +import com.mongodb.operation.ListCollectionsOperation; +import com.mongodb.operation.MapReduceToCollectionOperation; +import com.mongodb.operation.MapReduceWithInlineResultsOperation; +import com.mongodb.operation.MixedBulkWriteOperation; +import com.mongodb.operation.ReadOperation; +import com.mongodb.operation.UpdateOperation; +import com.mongodb.operation.WriteOperation; +import java.util.List; import org.bson.BsonDocument; import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; - -import java.util.List; /** * {@link MongoDBMethodInterceptor} intercept method of {@link com.mongodb.Mongo#execute(ReadOperation, ReadPreference)} @@ -51,7 +68,7 @@ public void beforeMethod(final EnhancedClassInstanceContext context, Object[] arguments = interceptorContext.allArguments(); String methodName = arguments[0].getClass().getSimpleName(); - Span span = ContextManager.createSpan(METHOD + methodName); + AbstractSpan span = ContextManager.createSpan(METHOD + methodName); Tags.COMPONENT.set(span, MONGODB_COMPONENT); Tags.DB_TYPE.set(span, MONGODB_COMPONENT); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); @@ -66,7 +83,7 @@ public void beforeMethod(final EnhancedClassInstanceContext context, @Override public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); span.setPeerHost((String)context.get(MONGODB_HOST)); span.setPort((Integer)context.get(MONGODB_PORT)); ContextManager.stopSpan(); diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java index 3e34b26618e1..e1592628eb14 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanConsumerInterceptor.java @@ -6,14 +6,14 @@ import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ConstructorInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; /** * {@link MotanProviderInterceptor} create span by fetch request url from @@ -45,7 +45,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv URL url = (URL) context.get(KEY_NAME_OF_REQUEST_URL); Request request = (Request) interceptorContext.allArguments()[0]; if (url != null) { - Span span = ContextManager.createSpan(generateOperationName(url, request)); + AbstractSpan span = ContextManager.createSpan(generateOperationName(url, request)); span.setPeerHost(url.getHost()); span.setPort(url.getPort()); Tags.COMPONENT.set(span, MOTAN_COMPONENT); @@ -64,7 +64,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn Object ret) { Response response = (Response) ret; if (response != null && response.getException() != null) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.ERROR.set(span, true); span.log(response.getException()); } diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java index 8ea879ce613a..6e1945b6d588 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/main/java/org/skywalking/apm/plugin/motan/MotanProviderInterceptor.java @@ -5,13 +5,13 @@ import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.skywalking.apm.util.StringUtil; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; /** * Current trace segment will ref the trace segment if the serialized trace context that fetch from {@link @@ -32,7 +32,7 @@ public class MotanProviderInterceptor implements InstanceMethodsAroundIntercepto public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result) { Request request = (Request) interceptorContext.allArguments()[0]; - Span span = ContextManager.createSpan(generateViewPoint(request)); + AbstractSpan span = ContextManager.createSpan(generateViewPoint(request)); Tags.COMPONENT.set(span, MOTAN_COMPONENT); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER); Tags.SPAN_LAYER.asRPCFramework(span); @@ -48,7 +48,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn Object ret) { Response response = (Response) ret; if (response != null && response.getException() != null) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); span.log(response.getException()); Tags.ERROR.set(span, true); } 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 1b2c49d70b85..fc57eaf86019 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 @@ -9,14 +9,15 @@ import org.skywalking.apm.agent.core.conf.Config; 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; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; /** * {@link RealCallInterceptor} intercept the synchronous http calls by the client of okhttp. @@ -57,7 +58,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv MethodInterceptResult result) throws Throwable { Request request = (Request)context.get(REQUEST_CONTEXT_KEY); - Span span = ContextManager.createSpan(request.url().uri().toString()); + AbstractSpan span = ContextManager.createSpan(request.url().uri().toString()); span.setPeerHost(request.url().host()); span.setPort(request.url().port()); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); @@ -96,7 +97,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn Response response = (Response)ret; int statusCode = response.code(); - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); if (statusCode >= 400) { Tags.ERROR.set(span, true); } diff --git a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java index 2e89fd08ea3d..ea273d2d561a 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-3.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v3/ResinV3Interceptor.java @@ -5,12 +5,12 @@ import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.util.StringUtil; /** @@ -30,7 +30,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv MethodInterceptResult result) { Object[] args = interceptorContext.allArguments(); CauchoRequest request = (CauchoRequest)args[0]; - Span span = ContextManager.createSpan(request.getPageURI()); + AbstractSpan span = ContextManager.createSpan(request.getPageURI()); Tags.COMPONENT.set(span, RESIN_COMPONENT); span.setPeerHost(request.getServerName()); span.setPort(request.getServerPort()); @@ -65,7 +65,7 @@ private String appendRequestURL(CauchoRequest request) { public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { HttpResponse response = (HttpResponse)interceptorContext.allArguments()[1]; - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.STATUS_CODE.set(span, response.getStatusCode()); if (response.getStatusCode() != 200) { @@ -78,7 +78,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn @Override public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); span.log(t); Tags.ERROR.set(span, true); } diff --git a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java index 5cfc5044f2e6..682d2b407beb 100644 --- a/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java +++ b/apm-sniffer/apm-sdk-plugin/resin-4.x-plugin/src/main/java/org/skywalking/apm/plugin/resin/v4/ResinV4Interceptor.java @@ -5,12 +5,12 @@ import org.skywalking.apm.agent.core.conf.Config; 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.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; -import org.skywalking.apm.agent.core.context.trace.Span; -import org.skywalking.apm.agent.core.context.tag.Tags; import org.skywalking.apm.util.StringUtil; /** @@ -27,7 +27,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv MethodInterceptResult result) { Object[] args = interceptorContext.allArguments(); CauchoRequest request = (CauchoRequest)args[0]; - Span span = ContextManager.createSpan(request.getPageURI()); + AbstractSpan span = ContextManager.createSpan(request.getPageURI()); Tags.COMPONENT.set(span, RESIN_COMPONENT); span.setPeerHost(request.getServerName()); span.setPort(request.getServerPort()); @@ -62,7 +62,7 @@ private String appendRequestURL(CauchoRequest request) { public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { HttpServletResponse response = (HttpServletResponse)interceptorContext.allArguments()[1]; - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.STATUS_CODE.set(span, response.getStatus()); if (response.getStatus() != 200) { @@ -75,7 +75,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn @Override public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); span.log(t); Tags.ERROR.set(span, true); } diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptor.java b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptor.java index 08d777a00c7e..80541fffe6c4 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/org/skywalking/apm/plugin/tomcat78x/TomcatInterceptor.java @@ -1,19 +1,18 @@ package org.skywalking.apm.plugin.tomcat78x; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.skywalking.apm.agent.core.conf.Config; 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.TraceSegment; 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; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.skywalking.apm.util.StringUtil; -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; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; /** * {@link TomcatInterceptor} fetch the serialized context data by using {@link HttpServletRequest#getHeader(String)}. @@ -40,7 +39,7 @@ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInv Object[] args = interceptorContext.allArguments(); HttpServletRequest request = (HttpServletRequest) args[0]; - Span span = ContextManager.createSpan(request.getRequestURI()); + AbstractSpan span = ContextManager.createSpan(request.getRequestURI()); Tags.COMPONENT.set(span, TOMCAT_COMPONENT); span.setPeerHost(fetchRequestPeerHost(request)); span.setPort(request.getRemotePort()); @@ -59,7 +58,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn Object ret) { HttpServletResponse response = (HttpServletResponse) interceptorContext.allArguments()[1]; - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); Tags.STATUS_CODE.set(span, response.getStatus()); if (response.getStatus() != 200) { @@ -73,7 +72,7 @@ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodIn @Override public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { - Span span = ContextManager.activeSpan(); + AbstractSpan span = ContextManager.activeSpan(); span.log(t); Tags.ERROR.set(span, true); } diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java index b31b527d4240..617d33e56c38 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java @@ -1,8 +1,8 @@ package org.skywalking.apm.sniffer.mock.trace.builders.span; import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.Tags; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * The DubboSpanGenerator generates all possible spans, by tracing Dubbo rpc. @@ -14,7 +14,7 @@ public class DubboSpanGenerator { public static class Client extends SpanGeneration { @Override protected void before() { - Span span = ContextManager.createSpan("/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"); + AbstractSpan span = ContextManager.createSpan("/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"); Tags.COMPONENT.set(span, "Dubbo"); Tags.URL.set(span, "rest://192.168.1.8:20880/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query(String)"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER); @@ -32,7 +32,7 @@ protected void after() { public static class Server extends SpanGeneration { @Override protected void before() { - Span span = ContextManager.createSpan("/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"); + AbstractSpan span = ContextManager.createSpan("/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"); Tags.COMPONENT.set(span, "Dubbo"); Tags.URL.set(span, "rest://192.168.1.8:20880/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query(String)"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java index cc2757a2586d..7516078de5e8 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java @@ -1,8 +1,8 @@ package org.skywalking.apm.sniffer.mock.trace.builders.span; import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.Tags; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * The MySQLGenerator generates all possible spans, by tracing mysql client access. @@ -13,7 +13,7 @@ public class MySQLGenerator { public static class Query extends SpanGeneration { @Override protected void before() { - Span span = ContextManager.createSpan("mysql/jdbi/statement/executeQuery"); + AbstractSpan span = ContextManager.createSpan("mysql/jdbi/statement/executeQuery"); Tags.COMPONENT.set(span, "Mysql"); Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT); span.setPeerHost("10.5.34.18"); diff --git a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java index e8386c0ead0b..f5c6c495955e 100644 --- a/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java +++ b/apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java @@ -1,8 +1,8 @@ package org.skywalking.apm.sniffer.mock.trace.builders.span; import org.skywalking.apm.agent.core.context.ContextManager; -import org.skywalking.apm.agent.core.context.trace.Span; import org.skywalking.apm.agent.core.context.tag.Tags; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; /** * The TomcatSpanGenerator generate all possible spans, by tracing Tomcat. @@ -15,7 +15,7 @@ public static class ON200 extends SpanGeneration { @Override protected void before() { - Span webSpan = ContextManager.createSpan("/web/serviceA"); + AbstractSpan webSpan = ContextManager.createSpan("/web/serviceA"); Tags.COMPONENT.set(webSpan, "Tomcat"); Tags.URL.set(webSpan, "http://10.21.9.35/web/serviceA"); Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); @@ -26,7 +26,7 @@ protected void before() { @Override protected void after() { - Span webSpan = ContextManager.activeSpan(); + AbstractSpan webSpan = ContextManager.activeSpan(); Tags.STATUS_CODE.set(webSpan, 200); ContextManager.stopSpan(); } @@ -37,7 +37,7 @@ public static class ON404 extends SpanGeneration { @Override protected void before() { - Span webSpan = ContextManager.createSpan("/web/service/unknown"); + AbstractSpan webSpan = ContextManager.createSpan("/web/service/unknown"); Tags.COMPONENT.set(webSpan, "Tomcat"); Tags.URL.set(webSpan, "http://10.21.9.35/web/unknown"); Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); @@ -48,7 +48,7 @@ protected void before() { @Override protected void after() { - Span webSpan = ContextManager.activeSpan(); + AbstractSpan webSpan = ContextManager.activeSpan(); Tags.STATUS_CODE.set(webSpan, 404); Tags.ERROR.set(webSpan, true); ContextManager.stopSpan(); @@ -60,7 +60,7 @@ public static class ON500 extends SpanGeneration { @Override protected void before() { - Span webSpan = ContextManager.createSpan("/web/error/service"); + AbstractSpan webSpan = ContextManager.createSpan("/web/error/service"); Tags.COMPONENT.set(webSpan, "Tomcat"); Tags.URL.set(webSpan, "http://10.21.9.35/web/error/service"); Tags.SPAN_KIND.set(webSpan, Tags.SPAN_KIND_SERVER); @@ -71,7 +71,7 @@ protected void before() { @Override protected void after() { - Span webSpan = ContextManager.activeSpan(); + AbstractSpan webSpan = ContextManager.activeSpan(); Tags.STATUS_CODE.set(webSpan, 500); Tags.ERROR.set(webSpan, true); webSpan.log(new NumberFormatException("Can't convert 'abc' to int.")); diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java index e11e196c731e..12db77eaed94 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java @@ -1,13 +1,12 @@ package org.skywalking.apm.toolkit.activation.opentracing.span.interceptor; +import java.util.Map; import org.skywalking.apm.agent.core.context.ContextManager; +import org.skywalking.apm.agent.core.context.trace.AbstractSpan; 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; import org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan; -import org.skywalking.apm.agent.core.context.trace.Span; - -import java.util.Map; /** * Intercept {@link SkyWalkingSpan} constructor. @@ -20,7 +19,7 @@ public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeC String operationName = (String) allArguments[0]; long startTime = (Long) allArguments[1]; Map tags = (Map) allArguments[2]; - Span span = ContextManager.createSpan(operationName, startTime); + AbstractSpan span = ContextManager.createSpan(operationName, startTime); for (Map.Entry entry : tags.entrySet()) { span.setTag(entry.getKey(), entry.getValue());