Loading apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +7 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,10 @@ public class ComponentsDefine { public static final OfficialComponent OKHTTP = new OfficialComponent(12, "OKHttp"); public static final OfficialComponent SPRING_REST_TEMPLATE = new OfficialComponent(13, "SpringRestTemplate"); public static final OfficialComponent SPRING_MVC_ANNOTATION = new OfficialComponent(14, "SpringMVCAnnotation"); private static ComponentsDefine instance = new ComponentsDefine(); private String[] components; Loading @@ -40,7 +44,7 @@ public class ComponentsDefine { } public ComponentsDefine() { components = new String[13]; components = new String[15]; addComponent(TOMCAT); addComponent(HTTPCLIENT); addComponent(DUBBO); Loading @@ -53,6 +57,8 @@ public class ComponentsDefine { addComponent(RESIN); addComponent(FEIGN); addComponent(OKHTTP); addComponent(SPRING_REST_TEMPLATE); addComponent(SPRING_MVC_ANNOTATION); } private void addComponent(OfficialComponent component) { Loading apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java +18 −5 Original line number Diff line number Diff line Loading @@ -290,29 +290,42 @@ public class TracingContext implements AbstractTracerContext { .find(remotePeer).doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(final int applicationId) { public Object doProcess(final int peerId) { return DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(applicationId, operationName) .findOnly(segment.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int operationId) { return new ExitSpan(spanIdGenerator++, parentSpanId, operationId, applicationId); return new ExitSpan(spanIdGenerator++, parentSpanId, operationId, peerId); } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return new ExitSpan(spanIdGenerator++, parentSpanId, operationName, remotePeer); return new ExitSpan(spanIdGenerator++, parentSpanId, operationName, peerId); } }); } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return DictionaryManager.findOperationNameCodeSection() .findOnly(segment.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int operationId) { return new ExitSpan(spanIdGenerator++, parentSpanId, operationId, remotePeer); } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return new ExitSpan(spanIdGenerator++, parentSpanId, operationName, remotePeer); } }); } }); push(exitSpan); } exitSpan.start(); Loading apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java +1 −31 Original line number Diff line number Diff line package org.skywalking.apm.agent.core.context.trace; import org.skywalking.apm.agent.core.dictionary.DictionaryManager; import org.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.skywalking.apm.agent.core.dictionary.PossibleFound; import org.skywalking.apm.network.trace.component.Component; /** Loading @@ -18,19 +16,16 @@ import org.skywalking.apm.network.trace.component.Component; * * @author wusheng */ public class EntrySpan extends AbstractTracingSpan { private int stackDepth; public class EntrySpan extends StackBasedTracingSpan { private int currentMaxDepth; public EntrySpan(int spanId, int parentSpanId, String operationName) { super(spanId, parentSpanId, operationName); this.stackDepth = 0; this.currentMaxDepth = 0; } public EntrySpan(int spanId, int parentSpanId, int operationId) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; this.currentMaxDepth = 0; } Loading Loading @@ -81,31 +76,6 @@ public class EntrySpan extends AbstractTracingSpan { } } @Override public boolean finish(TraceSegment owner) { if (--stackDepth == 0) { if (this.operationId == DictionaryUtil.nullValue()) { this.operationId = (Integer)DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(owner.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int value) { return value; } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return DictionaryUtil.nullValue(); } } ); } return super.finish(owner); } else { return false; } } @Override public AbstractTracingSpan setOperationName(String operationName) { if (stackDepth == currentMaxDepth) { Loading apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java +7 −14 Original line number Diff line number Diff line Loading @@ -17,32 +17,34 @@ import org.skywalking.apm.network.trace.component.Component; * * @author wusheng */ public class ExitSpan extends AbstractTracingSpan { private int stackDepth; public class ExitSpan extends StackBasedTracingSpan { private String peer; private int peerId; public ExitSpan(int spanId, int parentSpanId, String operationName, String peer) { super(spanId, parentSpanId, operationName); this.stackDepth = 0; this.peer = peer; this.peerId = DictionaryUtil.nullValue(); } public ExitSpan(int spanId, int parentSpanId, int operationId, int peerId) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; this.peer = null; this.peerId = peerId; } public ExitSpan(int spanId, int parentSpanId, int operationId, String peer) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; this.peer = peer; this.peerId = DictionaryUtil.nullValue(); } public ExitSpan(int spanId, int parentSpanId, String operationName, int peerId) { super(spanId, parentSpanId, operationName); this.peer = null; this.peerId = peerId; } /** * Set the {@link #startTime}, when the first start, which means the first service provided. */ Loading @@ -62,15 +64,6 @@ public class ExitSpan extends AbstractTracingSpan { return this; } @Override public boolean finish(TraceSegment owner) { if (--stackDepth == 0) { return super.finish(owner); } else { return false; } } @Override public AbstractTracingSpan setLayer(SpanLayer layer) { if (stackDepth == 1) { Loading apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/StackBasedTracingSpan.java 0 → 100644 +51 −0 Original line number Diff line number Diff line package org.skywalking.apm.agent.core.context.trace; import org.skywalking.apm.agent.core.dictionary.DictionaryManager; import org.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.skywalking.apm.agent.core.dictionary.PossibleFound; /** * The <code>StackBasedTracingSpan</code> represents a span with an inside stack construction. * * This kind of span can start and finish multi times in a stack-like invoke line. * * @author wusheng */ public abstract class StackBasedTracingSpan extends AbstractTracingSpan { protected int stackDepth; protected StackBasedTracingSpan(int spanId, int parentSpanId, String operationName) { super(spanId, parentSpanId, operationName); this.stackDepth = 0; } protected StackBasedTracingSpan(int spanId, int parentSpanId, int operationId) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; } @Override public boolean finish(TraceSegment owner) { if (--stackDepth == 0) { if (this.operationId == DictionaryUtil.nullValue()) { this.operationId = (Integer)DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(owner.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int value) { return value; } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return DictionaryUtil.nullValue(); } } ); } return super.finish(owner); } else { return false; } } } Loading
apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java +7 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,10 @@ public class ComponentsDefine { public static final OfficialComponent OKHTTP = new OfficialComponent(12, "OKHttp"); public static final OfficialComponent SPRING_REST_TEMPLATE = new OfficialComponent(13, "SpringRestTemplate"); public static final OfficialComponent SPRING_MVC_ANNOTATION = new OfficialComponent(14, "SpringMVCAnnotation"); private static ComponentsDefine instance = new ComponentsDefine(); private String[] components; Loading @@ -40,7 +44,7 @@ public class ComponentsDefine { } public ComponentsDefine() { components = new String[13]; components = new String[15]; addComponent(TOMCAT); addComponent(HTTPCLIENT); addComponent(DUBBO); Loading @@ -53,6 +57,8 @@ public class ComponentsDefine { addComponent(RESIN); addComponent(FEIGN); addComponent(OKHTTP); addComponent(SPRING_REST_TEMPLATE); addComponent(SPRING_MVC_ANNOTATION); } private void addComponent(OfficialComponent component) { Loading
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java +18 −5 Original line number Diff line number Diff line Loading @@ -290,29 +290,42 @@ public class TracingContext implements AbstractTracerContext { .find(remotePeer).doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(final int applicationId) { public Object doProcess(final int peerId) { return DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(applicationId, operationName) .findOnly(segment.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int operationId) { return new ExitSpan(spanIdGenerator++, parentSpanId, operationId, applicationId); return new ExitSpan(spanIdGenerator++, parentSpanId, operationId, peerId); } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return new ExitSpan(spanIdGenerator++, parentSpanId, operationName, remotePeer); return new ExitSpan(spanIdGenerator++, parentSpanId, operationName, peerId); } }); } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return DictionaryManager.findOperationNameCodeSection() .findOnly(segment.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int operationId) { return new ExitSpan(spanIdGenerator++, parentSpanId, operationId, remotePeer); } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return new ExitSpan(spanIdGenerator++, parentSpanId, operationName, remotePeer); } }); } }); push(exitSpan); } exitSpan.start(); Loading
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java +1 −31 Original line number Diff line number Diff line package org.skywalking.apm.agent.core.context.trace; import org.skywalking.apm.agent.core.dictionary.DictionaryManager; import org.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.skywalking.apm.agent.core.dictionary.PossibleFound; import org.skywalking.apm.network.trace.component.Component; /** Loading @@ -18,19 +16,16 @@ import org.skywalking.apm.network.trace.component.Component; * * @author wusheng */ public class EntrySpan extends AbstractTracingSpan { private int stackDepth; public class EntrySpan extends StackBasedTracingSpan { private int currentMaxDepth; public EntrySpan(int spanId, int parentSpanId, String operationName) { super(spanId, parentSpanId, operationName); this.stackDepth = 0; this.currentMaxDepth = 0; } public EntrySpan(int spanId, int parentSpanId, int operationId) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; this.currentMaxDepth = 0; } Loading Loading @@ -81,31 +76,6 @@ public class EntrySpan extends AbstractTracingSpan { } } @Override public boolean finish(TraceSegment owner) { if (--stackDepth == 0) { if (this.operationId == DictionaryUtil.nullValue()) { this.operationId = (Integer)DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(owner.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int value) { return value; } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return DictionaryUtil.nullValue(); } } ); } return super.finish(owner); } else { return false; } } @Override public AbstractTracingSpan setOperationName(String operationName) { if (stackDepth == currentMaxDepth) { Loading
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java +7 −14 Original line number Diff line number Diff line Loading @@ -17,32 +17,34 @@ import org.skywalking.apm.network.trace.component.Component; * * @author wusheng */ public class ExitSpan extends AbstractTracingSpan { private int stackDepth; public class ExitSpan extends StackBasedTracingSpan { private String peer; private int peerId; public ExitSpan(int spanId, int parentSpanId, String operationName, String peer) { super(spanId, parentSpanId, operationName); this.stackDepth = 0; this.peer = peer; this.peerId = DictionaryUtil.nullValue(); } public ExitSpan(int spanId, int parentSpanId, int operationId, int peerId) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; this.peer = null; this.peerId = peerId; } public ExitSpan(int spanId, int parentSpanId, int operationId, String peer) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; this.peer = peer; this.peerId = DictionaryUtil.nullValue(); } public ExitSpan(int spanId, int parentSpanId, String operationName, int peerId) { super(spanId, parentSpanId, operationName); this.peer = null; this.peerId = peerId; } /** * Set the {@link #startTime}, when the first start, which means the first service provided. */ Loading @@ -62,15 +64,6 @@ public class ExitSpan extends AbstractTracingSpan { return this; } @Override public boolean finish(TraceSegment owner) { if (--stackDepth == 0) { return super.finish(owner); } else { return false; } } @Override public AbstractTracingSpan setLayer(SpanLayer layer) { if (stackDepth == 1) { Loading
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/StackBasedTracingSpan.java 0 → 100644 +51 −0 Original line number Diff line number Diff line package org.skywalking.apm.agent.core.context.trace; import org.skywalking.apm.agent.core.dictionary.DictionaryManager; import org.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.skywalking.apm.agent.core.dictionary.PossibleFound; /** * The <code>StackBasedTracingSpan</code> represents a span with an inside stack construction. * * This kind of span can start and finish multi times in a stack-like invoke line. * * @author wusheng */ public abstract class StackBasedTracingSpan extends AbstractTracingSpan { protected int stackDepth; protected StackBasedTracingSpan(int spanId, int parentSpanId, String operationName) { super(spanId, parentSpanId, operationName); this.stackDepth = 0; } protected StackBasedTracingSpan(int spanId, int parentSpanId, int operationId) { super(spanId, parentSpanId, operationId); this.stackDepth = 0; } @Override public boolean finish(TraceSegment owner) { if (--stackDepth == 0) { if (this.operationId == DictionaryUtil.nullValue()) { this.operationId = (Integer)DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(owner.getApplicationId(), operationName) .doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(int value) { return value; } }, new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { return DictionaryUtil.nullValue(); } } ); } return super.finish(owner); } else { return false; } } }