提交 983dd8ea 编写于 作者: wu-sheng's avatar wu-sheng

Provide AbstractSpan interface for the context.

上级 cf3d2a40
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 <code>AbstractTracerContext</code> 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();
}
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 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegment;
* https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans}
* <p> 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)}
* <p>
*
* @author wusheng
......@@ -55,23 +55,23 @@ public class ContextManager implements TracerContextListener, BootService, Ignor
}
}
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();
}
......
......@@ -2,7 +2,7 @@ package org.skywalking.apm.agent.core.context;
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 <code>IgnoreTracerContext</code> represent a context should be ignored.
......@@ -36,23 +36,23 @@ public class IgnoreTracerContext implements AbstractTracerContext {
}
@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 class IgnoreTracerContext implements AbstractTracerContext {
}
@Override
public void stopSpan(Span span, Long endTime) {
public void stopSpan(AbstractSpan span, Long endTime) {
stopSpan(span);
}
......
......@@ -3,6 +3,7 @@ package org.skywalking.apm.agent.core.context;
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 final class TracerContext implements AbstractTracerContext {
* @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 final class TracerContext implements AbstractTracerContext {
/**
* @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 final class TracerContext implements AbstractTracerContext {
*
* @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 final class TracerContext implements AbstractTracerContext {
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 @@ public final class TracerContext implements AbstractTracerContext {
*/
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();
......
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 abstract class AbstractTag<T> {
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.
......
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 class BooleanTag extends AbstractTag<Boolean> {
}
@Override
public void set(Span span, Boolean tagValue) {
public void set(AbstractSpan span, Boolean tagValue) {
span.setTag(key, tagValue);
}
......
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 class IntTag extends AbstractTag<Integer> {
}
@Override
public void set(Span span, Integer tagValue) {
public void set(AbstractSpan span, Integer tagValue) {
span.setTag(super.key, tagValue);
}
......
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 class StringTag extends AbstractTag<String> {
}
@Override
public void set(Span span, String tagValue) {
public void set(AbstractSpan span, String tagValue) {
span.setTag(key, tagValue);
}
}
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 final class Tags {
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);
}
}
......
package org.skywalking.apm.agent.core.context.trace;
import java.util.Map;
/**
* The <code>AbstractSpan</code> 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<String, String> fields);
AbstractSpan log(Throwable t);
AbstractSpan log(String event);
}
......@@ -32,7 +32,7 @@ import org.skywalking.apm.util.StringUtil;
* 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 @@ public class Span {
this.spanId = spanId;
this.parentSpanId = parentSpanId;
this.startTime = startTime;
this.operationName = operationName;
this.setOperationName(operationName);
}
/**
......@@ -192,10 +192,12 @@ public class Span {
/**
* 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) {
......
......@@ -5,9 +5,9 @@ import org.junit.Assert;
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 class ContextManagerTestCase {
@Test
public void testDelegateToTracerContext() {
Span span = ContextManager.createSpan("serviceA");
AbstractSpan span = ContextManager.createSpan("serviceA");
Tags.COMPONENT.set(span, "test");
Assert.assertEquals(span, ContextManager.activeSpan());
......
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 class TracerContextTestCase {
@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 class TracerContextTestCase {
@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 class TracerContextTestCase {
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;
......
......@@ -8,14 +8,14 @@ import com.alibaba.dubbo.rpc.RpcContext;
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 class DubboInterceptor implements InstanceMethodsAroundInterceptor {
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 class DubboInterceptor implements InstanceMethodsAroundInterceptor {
* 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);
}
......
......@@ -14,12 +14,13 @@ import java.util.Map;
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 class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc
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 class DefaultHttpClientInterceptor implements InstanceMethodsAroundInterc
Response response = (Response)ret;
int statusCode = response.status();
Span span = ContextManager.activeSpan();
AbstractSpan span = ContextManager.activeSpan();
if (statusCode >= 400) {
Tags.ERROR.set(span, true);
}
......
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 class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc
}
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 @@ public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc
/**
* 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 class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc
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);
}
......
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 class CallableStatementTracing {
ConnectionInfo connectInfo, String method, String sql, Executable<R> 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 class CallableStatementTracing {
}
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;
......
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 class ConnectionTracing {
ConnectionInfo connectInfo, String method, String sql, Executable<R> 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 class ConnectionTracing {
}
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;
......
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 class PreparedStatementTracing {
ConnectionInfo connectInfo, String method, String sql, Executable<R> 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 class PreparedStatementTracing {
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;
......
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 class StatementTracing {
ConnectionInfo connectInfo, String method, String sql, Executable<R> 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 class StatementTracing {
}
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;
......
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 class JedisMethodInterceptor extends NoConcurrencyAccessObject implements
/**
* 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 class JedisMethodInterceptor extends NoConcurrencyAccessObject implements
@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);
......
......@@ -5,18 +5,35 @@ import com.mongodb.bulk.DeleteRequest;
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 class MongoDBMethodInterceptor implements InstanceMethodsAroundIntercepto
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 class MongoDBMethodInterceptor implements InstanceMethodsAroundIntercepto
@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();
......
......@@ -6,14 +6,14 @@ import com.weibo.api.motan.rpc.URL;
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 class MotanConsumerInterceptor implements InstanceConstructorInterceptor,
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 class MotanConsumerInterceptor implements InstanceConstructorInterceptor,
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());
}
......
......@@ -5,13 +5,13 @@ import com.weibo.api.motan.rpc.Response;
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 class MotanProviderInterceptor implements InstanceMethodsAroundIntercepto
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);
}
......
......@@ -9,14 +9,15 @@ import okhttp3.Response;
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 class RealCallInterceptor implements InstanceMethodsAroundInterceptor, In
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 class RealCallInterceptor implements InstanceMethodsAroundInterceptor, In
Response response = (Response)ret;
int statusCode = response.code();
Span span = ContextManager.activeSpan();
AbstractSpan span = ContextManager.activeSpan();
if (statusCode >= 400) {
Tags.ERROR.set(span, true);
}
......
......@@ -5,12 +5,12 @@ import com.caucho.server.http.HttpResponse;
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 class ResinV3Interceptor implements InstanceMethodsAroundInterceptor {
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 @@ public class ResinV3Interceptor implements InstanceMethodsAroundInterceptor {
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 class ResinV3Interceptor implements InstanceMethodsAroundInterceptor {
@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);
}
......
......@@ -5,12 +5,12 @@ 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.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 class ResinV4Interceptor implements InstanceMethodsAroundInterceptor {
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 @@ public class ResinV4Interceptor implements InstanceMethodsAroundInterceptor {
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 class ResinV4Interceptor implements InstanceMethodsAroundInterceptor {
@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);
}
......
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 class TomcatInterceptor implements InstanceMethodsAroundInterceptor {
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 class TomcatInterceptor implements InstanceMethodsAroundInterceptor {
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 class TomcatInterceptor implements InstanceMethodsAroundInterceptor {
@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);
}
......
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 <code>DubboSpanGenerator</code> 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 @@ public class DubboSpanGenerator {
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);
......
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 <code>MySQLGenerator</code> 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");
......
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 <code>TomcatSpanGenerator</code> generate all possible spans, by tracing Tomcat.
......@@ -15,7 +15,7 @@ public class TomcatSpanGenerator {
@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 @@ public class TomcatSpanGenerator {
@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 class TomcatSpanGenerator {
@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 @@ public class TomcatSpanGenerator {
@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 class TomcatSpanGenerator {
@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 @@ public class TomcatSpanGenerator {
@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."));
......
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 class SpanNewInstanceInterceptor implements InstanceConstructorIntercepto
String operationName = (String) allArguments[0];
long startTime = (Long) allArguments[1];
Map<String, String> tags = (Map<String, String>) allArguments[2];
Span span = ContextManager.createSpan(operationName, startTime);
AbstractSpan span = ContextManager.createSpan(operationName, startTime);
for (Map.Entry<String, String> entry : tags.entrySet()) {
span.setTag(entry.getKey(), entry.getValue());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册