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;
|
||||
}
|
||||
|
||||
@NeedSnifferActivation(
|
||||
"1. ContextManager#activeSpan()" +
|
||||
"2. SkywalkingSpan#setTag(String, String)")
|
||||
@Override public Span setTag(String key, String value) {
|
||||
return null;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override public Span setTag(String key, boolean value) {
|
||||
return null;
|
||||
return setTag(key, String.valueOf(value));
|
||||
}
|
||||
|
||||
@Override public Span setTag(String key, Number value) {
|
||||
return null;
|
||||
return setTag(key, String.valueOf(value));
|
||||
}
|
||||
|
||||
@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 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_TAG_INTERCEPTOR = "org.skywalking.apm.toolkit.activation.opentracing.span.SpanSetTagInterceptor";
|
||||
|
||||
@Override
|
||||
protected ClassMatch enhanceClass() {
|
||||
|
|
@ -132,6 +133,19 @@ public class SkywalkingSpanActivation extends ClassInstanceMethodsEnhancePluginD
|
|||
public boolean isOverrideArgs() {
|
||||
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