fix issue that open tracing activation set tag failed
This commit is contained in:
parent
79a45823b6
commit
91d08bbcd9
|
|
@ -68,16 +68,19 @@ public class SkywalkingSpan implements Span {
|
||||||
return SkywalkingContext.INSTANCE;
|
return SkywalkingContext.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NeedSnifferActivation(
|
||||||
|
"1. ContextManager#activeSpan()" +
|
||||||
|
"2. SkywalkingSpan#setTag(String, String)")
|
||||||
@Override public Span setTag(String key, String value) {
|
@Override public Span setTag(String key, String value) {
|
||||||
return null;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Span setTag(String key, boolean value) {
|
@Override public Span setTag(String key, boolean value) {
|
||||||
return null;
|
return setTag(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Span setTag(String key, Number value) {
|
@Override public Span setTag(String key, Number value) {
|
||||||
return null;
|
return setTag(key, String.valueOf(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ public class SkywalkingSpanActivation extends ClassInstanceMethodsEnhancePluginD
|
||||||
private static final String FINISH_METHOD_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanFinishInterceptor";
|
private static final String FINISH_METHOD_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanFinishInterceptor";
|
||||||
private static final String LOG_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanLogInterceptor";
|
private static final String LOG_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanLogInterceptor";
|
||||||
private static final String SET_OPERATION_NAME_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanSetOperationNameInterceptor";
|
private static final String SET_OPERATION_NAME_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanSetOperationNameInterceptor";
|
||||||
|
private static final String SET_TAG_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanSetTagInterceptor";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ClassMatch enhanceClass() {
|
protected ClassMatch enhanceClass() {
|
||||||
|
|
@ -132,6 +133,19 @@ public class SkywalkingSpanActivation extends ClassInstanceMethodsEnhancePluginD
|
||||||
public boolean isOverrideArgs() {
|
public boolean isOverrideArgs() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
new InstanceMethodsInterceptPoint() {
|
||||||
|
@Override public ElementMatcher<MethodDescription> getMethodsMatcher() {
|
||||||
|
return named("setTag").and(takesArgument(0, String.class)).and(takesArgument(1, String.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public String getMethodsInterceptor() {
|
||||||
|
return SET_TAG_INTERCEPTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean isOverrideArgs() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
package org.skywalking.apm.toolkit.activation.opentracing.span;
|
||||||
|
|
||||||
|
import io.opentracing.tag.Tags;
|
||||||
|
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.enhance.EnhancedInstance;
|
||||||
|
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
|
||||||
|
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
|
||||||
|
|
||||||
|
public class SpanSetTagInterceptor implements InstanceMethodsAroundInterceptor {
|
||||||
|
@Override
|
||||||
|
public void beforeMethod(EnhancedInstance objInst, String methodName, Object[] allArguments,
|
||||||
|
Class<?>[] argumentsTypes, MethodInterceptResult result) throws Throwable {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object afterMethod(EnhancedInstance objInst, String methodName, Object[] allArguments,
|
||||||
|
Class<?>[] argumentsTypes, Object ret) throws Throwable {
|
||||||
|
AbstractSpan activeSpan = ContextManager.activeSpan();
|
||||||
|
String tagKey = String.valueOf(allArguments[0]);
|
||||||
|
String tagValue = String.valueOf(allArguments[1]);
|
||||||
|
if (Tags.COMPONENT.getKey().equals(tagKey)) {
|
||||||
|
activeSpan.setComponent(tagValue);
|
||||||
|
} else if (Tags.PEER_SERVICE.getKey().equals(tagKey)) {
|
||||||
|
activeSpan.setOperationName(tagValue);
|
||||||
|
} else {
|
||||||
|
activeSpan.tag(tagKey, tagValue);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleMethodException(EnhancedInstance objInst, String methodName, Object[] allArguments,
|
||||||
|
Class<?>[] argumentsTypes, Throwable t) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue