提交 6e6e9c26 编写于 作者: wu-sheng's avatar wu-sheng 提交者: GitHub

Merge pull request #284 from ascrutae/zhangxin/fix/283

fix issue that operation name and operation id are not correct
......@@ -88,6 +88,24 @@ public class EntrySpan extends AbstractTracingSpan {
}
}
@Override
public AbstractTracingSpan setOperationName(String operationName) {
if (stackDepth == currentMaxDepth) {
return super.setOperationName(operationName);
} else {
return this;
}
}
@Override
public AbstractTracingSpan setOperationId(int operationId) {
if (stackDepth == currentMaxDepth) {
return super.setOperationId(operationId);
} else {
return this;
}
}
@Override
public EntrySpan log(Throwable t) {
super.log(t);
......
......@@ -116,6 +116,24 @@ public class ExitSpan extends AbstractTracingSpan {
return spanBuilder;
}
@Override
public AbstractTracingSpan setOperationName(String operationName) {
if (stackDepth == 1) {
return super.setOperationName(operationName);
} else {
return this;
}
}
@Override
public AbstractTracingSpan setOperationId(int operationId) {
if (stackDepth == 1) {
return super.setOperationId(operationId);
} else {
return this;
}
}
public int getPeerId() {
return peerId;
}
......
package org.skywalking.apm.agent.core.context;
import com.google.instrumentation.trace.Span;
import com.google.protobuf.InvalidProtocolBufferException;
import java.util.List;
import org.junit.After;
......@@ -19,6 +20,7 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegment;
import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef;
import org.skywalking.apm.agent.core.context.util.AbstractTracingSpanHelper;
import org.skywalking.apm.agent.core.context.util.SegmentHelper;
import org.skywalking.apm.agent.core.context.util.SpanHelper;
import org.skywalking.apm.agent.core.test.tools.AgentServiceRule;
import org.skywalking.apm.agent.core.test.tools.SegmentStorage;
import org.skywalking.apm.agent.core.test.tools.SegmentStoragePoint;
......@@ -102,6 +104,8 @@ public class ContextManagerTest {
ContextManager.stopSpan();
ContextManager.stopSpan();
SpanLayer.asHttp(firstEntrySpan);
firstEntrySpan.setOperationName("/testFirstEntry-setOperationName");
ContextManager.stopSpan();
assertThat(tracingData.getTraceSegments().size(), is(1));
......@@ -121,6 +125,8 @@ public class ContextManagerTest {
assertThat(actualEntrySpan.getOperationName(), is("/testSecondEntry"));
assertThat(actualEntrySpan.getSpanId(), is(0));
assertThat(AbstractTracingSpanHelper.getParentSpanId(actualEntrySpan), is(-1));
assertThat(SpanHelper.getComponentId(actualEntrySpan), is(ComponentsDefine.DUBBO.getId()));
assertThat(SpanHelper.getLayer(actualEntrySpan), is(SpanLayer.RPC_FRAMEWORK));
AbstractTracingSpan actualExitSpan = spanList.get(0);
assertThat(actualExitSpan.getOperationName(), is("/textExitSpan"));
......@@ -156,6 +162,7 @@ public class ContextManagerTest {
Tags.HTTP.METHOD.set(secondExitSpan, "GET");
Tags.URL.set(secondExitSpan, "127.0.0.1:8080");
SpanLayer.asHttp(secondExitSpan);
secondExitSpan.setOperationName("/testSecondExit-setOperationName");
ContextManager.stopSpan();
ContextManager.stopSpan();
......@@ -172,6 +179,8 @@ public class ContextManagerTest {
assertThat(actualFirstExitSpan.getOperationName(), is("/testFirstExit"));
assertThat(actualFirstExitSpan.getSpanId(), is(1));
assertThat(AbstractTracingSpanHelper.getParentSpanId(actualFirstExitSpan), is(0));
assertThat(SpanHelper.getComponentId(actualFirstExitSpan), is(ComponentsDefine.DUBBO.getId()));
assertThat(SpanHelper.getLayer(actualFirstExitSpan), is(SpanLayer.RPC_FRAMEWORK));
AbstractTracingSpan actualEntrySpan = spanList.get(1);
assertThat(actualEntrySpan.getOperationName(), is("/testEntrySpan"));
......
package org.skywalking.apm.agent.core.context.util;
import org.skywalking.apm.agent.core.context.trace.AbstractSpan;
import org.skywalking.apm.agent.core.context.trace.SpanLayer;
public class SpanHelper {
public static SpanLayer getLayer(AbstractSpan tracingSpan) {
try {
return FieldGetter.getParentFieldValue(tracingSpan, "layer");
} catch (Exception e) {
}
return null;
}
public static int getComponentId(AbstractSpan tracingSpan) {
try {
return FieldGetter.getParentFieldValue(tracingSpan, "componentId");
} catch (Exception e) {
}
return -1;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册