Skip to content

Commit

Permalink
add HasMethodAdvice
Browse files Browse the repository at this point in the history
  • Loading branch information
songlonqi-java committed Feb 7, 2025
1 parent eb06dee commit 1f98e1a
Show file tree
Hide file tree
Showing 47 changed files with 199 additions and 213 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

@AutoService(InstrumenterModule.class)
public final class AxisClientInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {

public AxisClientInstrumentation() {super("axis1");}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
package datadog.trace.instrumentation.alibaba.dubbo;

import datadog.trace.bootstrap.instrumentation.api.AgentScope;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
import datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.*;
import static datadog.trace.instrumentation.alibaba.dubbo.DubboConstants.*;
import static datadog.trace.instrumentation.alibaba.dubbo.DubboHeadersExtractAdapter.GETTER;
import static datadog.trace.instrumentation.alibaba.dubbo.DubboHeadersInjectAdapter.SETTER;

import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.StringUtils;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcContext;
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
import datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.*;
import static datadog.trace.instrumentation.alibaba.dubbo.DubboConstants.*;
import static datadog.trace.instrumentation.alibaba.dubbo.DubboHeadersExtractAdapter.GETTER;
import static datadog.trace.instrumentation.alibaba.dubbo.DubboHeadersInjectAdapter.SETTER;

public class DubboDecorator extends BaseDecorator {
private static final Logger log = LoggerFactory.getLogger(DubboDecorator.class);
public static final CharSequence DUBBO_REQUEST = UTF8BytesString.create("dubbo");
Expand Down Expand Up @@ -64,7 +65,7 @@ public AgentSpan startDubboSpan(Invoker invoker, Invocation invocation) {
span = startSpan(DUBBO_REQUEST);
}else{
// this is provider
AgentSpan.Context parentContext = propagate().extract(rpcContext, GETTER);
AgentSpanContext parentContext = propagate().extract(rpcContext, GETTER);
span = startSpan(DUBBO_REQUEST,parentContext);
}
span.setTag(TAG_URL, url.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

@AutoService(InstrumenterModule.class)
public class DubboInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {

public DubboInstrumentation() {
super("alibaba-dubbo");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

@AutoService(InstrumenterModule.class)
public class DubboConsumerInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {

public DubboConsumerInstrumentation() {
super("apache-dubbo");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package datadog.trace.instrumentation.dubbo_2_7x;

import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.*;
import static datadog.trace.instrumentation.dubbo_2_7x.DubboConstants.*;
import static datadog.trace.instrumentation.dubbo_2_7x.DubboHeadersExtractAdapter.GETTER;
import static datadog.trace.instrumentation.dubbo_2_7x.DubboHeadersInjectAdapter.SETTER;

import datadog.trace.api.Config;
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
import datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator;
import org.apache.dubbo.common.URL;
Expand All @@ -14,11 +20,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.*;
import static datadog.trace.instrumentation.dubbo_2_7x.DubboConstants.*;
import static datadog.trace.instrumentation.dubbo_2_7x.DubboHeadersExtractAdapter.GETTER;
import static datadog.trace.instrumentation.dubbo_2_7x.DubboHeadersInjectAdapter.SETTER;

public class DubboDecorator extends BaseDecorator {
private static final Logger log = LoggerFactory.getLogger(DubboDecorator.class);
public static final CharSequence DUBBO_REQUEST = UTF8BytesString.create("dubbo");
Expand Down Expand Up @@ -75,7 +76,7 @@ public AgentSpan startDubboSpan(Invoker invoker,Invocation invocation) {
propagate().inject(span, dubboTraceInfo, SETTER);
}else{
// this is provider
AgentSpan.Context parentContext = propagate().extract(dubboTraceInfo, GETTER);
AgentSpanContext parentContext = propagate().extract(dubboTraceInfo, GETTER);
span = startSpan(DUBBO_REQUEST,parentContext);
if (Config.get().isDubboProviderPropagateEnabled()){
propagate().inject(span, dubboTraceInfo, SETTER);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

@AutoService(InstrumenterModule.class)
public class DubboProviderInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy , Instrumenter.HasMethodAdvice{

public DubboProviderInstrumentation() {
super("apache-dubbo");
Expand Down Expand Up @@ -44,15 +44,14 @@ public void methodAdvice(MethodTransformer transformation) {

@Override
public String[] helperClassNames() {
return new String[]{
packageName + ".DubboDecorator",
packageName + ".DubboTraceInfo",
packageName + ".HostAndPort",
packageName + ".DubboConstants",
packageName + ".DubboProviderAdvice",
packageName + ".DubboHeadersExtractAdapter",
packageName + ".DubboHeadersInjectAdapter"
return new String[] {
packageName + ".DubboDecorator",
packageName + ".DubboTraceInfo",
packageName + ".HostAndPort",
packageName + ".DubboConstants",
packageName + ".DubboProviderAdvice",
packageName + ".DubboHeadersExtractAdapter",
packageName + ".DubboHeadersInjectAdapter"
};
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package datadog.trace.instrumentation.graalvmjs;

import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.instrumentation.graalvmjs.GraalvmjsDecorator.DECORATOR;
import static net.bytebuddy.matcher.ElementMatchers.*;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
Expand All @@ -10,15 +16,9 @@
import net.bytebuddy.matcher.ElementMatcher;
import org.graalvm.polyglot.Source;

import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.instrumentation.graalvmjs.GraalvmjsDecorator.DECORATOR;
import static net.bytebuddy.matcher.ElementMatchers.*;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;

@AutoService(InstrumenterModule.class)
public class GraalvmJSInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {

public GraalvmJSInstrumentation() {
super("graalvm-js");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

@AutoService(InstrumenterModule.class)
public class LettuceDefaultEndpointInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForSingleType {
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
public LettuceDefaultEndpointInstrumentation() {
super("lettuce");
}
Expand All @@ -22,9 +22,6 @@ public String instrumentedType() {
@Override
public void methodAdvice(MethodTransformer transformer) {
transformer.applyAdvice(
isMethod()
.and(named("write")),
packageName + ".LettuceDefaultEndpointAdvice");

isMethod().and(named("write")), packageName + ".LettuceDefaultEndpointAdvice");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

@AutoService(InstrumenterModule.class)
public class PatternLayoutInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForSingleType {
implements Instrumenter.ForSingleType,Instrumenter.HasMethodAdvice {
public PatternLayoutInstrumentation() {
super("log4j", "log4j-2");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

@AutoService(InstrumenterModule.class)
public class PatternLayoutInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForSingleType {
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
public PatternLayoutInstrumentation() {
super("log4j", "log4j-2");
}
Expand All @@ -33,18 +33,12 @@ public String instrumentedType() {
@Override
public void methodAdvice(MethodTransformer transformation) {
transformation.applyAdvice(
isMethod()
.and(isPublic())
.and(named("build"))
.and(takesArguments(0))
,
isMethod().and(isPublic()).and(named("build")).and(takesArguments(0)),
packageName + ".PatternLayoutBuildAdvice");
}

@Override
public String[] helperClassNames() {
return new String[]{
packageName + ".PatternLayoutBuildAdvice"
};
return new String[] {packageName + ".PatternLayoutBuildAdvice"};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import datadog.trace.api.DDTraceId;
import datadog.trace.api.InstrumenterConfig;
import datadog.trace.bootstrap.InstrumentationContext;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
import datadog.trace.bootstrap.instrumentation.api.Tags;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

@AutoService(InstrumenterModule.class)
public class MqBatchInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy{
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice{
public static final String CLASS_NAME = "com.aliyun.openservices.ons.api.batch.BatchMessageListener";

public MqBatchInstrumentation() {super("rocketmq", "ons-client");}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package datadog.trace.instrumentation.ons_client;

import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.*;
import static datadog.trace.instrumentation.ons_client.ExtractAdapter.GETTER;

import com.aliyun.openservices.ons.api.Message;
import datadog.trace.api.Config;
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
import datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator;

import java.util.List;

import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.*;
import static datadog.trace.instrumentation.ons_client.ExtractAdapter.GETTER;

public class MqDecorator extends BaseDecorator {
public static final CharSequence ROCKETMQ_NAME = UTF8BytesString.create("rocketmq");
private static final String MESSAGE_ID = "message.id";
Expand All @@ -38,7 +38,7 @@ protected CharSequence component() {
}

public AgentScope OnStart(Message message) {
AgentSpan.Context parentContext = propagate().extract(message,GETTER);
AgentSpanContext parentContext = propagate().extract(message,GETTER);
String topic = message.getTopic();
UTF8BytesString spanName = UTF8BytesString.create("producer send");
AgentSpan span;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

@AutoService(InstrumenterModule.class)
public class MqNormalInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
// 普通消息
public static final String CLASS_NAME = "com.aliyun.openservices.ons.api.MessageListener";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

@AutoService(InstrumenterModule.class)
public class MqOrderInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy{
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice{

public static final String CLASS_NAME = "com.aliyun.openservices.ons.api.order.MessageOrderListener";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

@AutoService(InstrumenterModule.class)
public class ProducerSendInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy{
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice{

public static final String CLASS_NAME = "com.aliyun.openservices.ons.api.Producer";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

@AutoService(InstrumenterModule.class)
public class BasicProcessorInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy , Instrumenter.HasMethodAdvice{
public BasicProcessorInstrumentation() {
super("powerjob");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import datadog.trace.bootstrap.instrumentation.api.AgentScope;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
import datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator;
import java.util.concurrent.CompletableFuture;
Expand Down Expand Up @@ -48,7 +49,7 @@ public static void startAndEnd(PulsarRequest pr, Throwable throwable, String bro
if (extractScope != null) {
return;
}
AgentSpan.Context parentContext = propagate().extract(pr, GETTER);
AgentSpanContext parentContext = propagate().extract(pr, GETTER);
String topic = pr.getMessage().getTopicName();
UTF8BytesString spanName = UTF8BytesString.create(topic + " receive");
final AgentSpan span = startSpan(spanName, parentContext);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

@AutoService(InstrumenterModule.class)
public final class ConsumerImplInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForKnownTypes {
implements Instrumenter.ForKnownTypes,Instrumenter.HasMethodAdvice {

private static final Logger log = LoggerFactory.getLogger(ConsumerImplInstrumentation.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

@AutoService(InstrumenterModule.class)
public class MessageListenerInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy , Instrumenter.HasMethodAdvice{

public MessageListenerInstrumentation() {
super("pulsar");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

@AutoService(InstrumenterModule.class)
public final class ProducerImplInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy , Instrumenter.HasMethodAdvice{

public static final String CLASS_NAME = "org.apache.pulsar.client.impl.ProducerImpl";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package datadog.trace.instrumentation.rhino;

import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static datadog.trace.instrumentation.rhino.RhinoDecorator.INSTRUMENTATION;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.isPrivate;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;

import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static datadog.trace.instrumentation.rhino.RhinoDecorator.INSTRUMENTATION;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.isPrivate;

@AutoService(InstrumenterModule.class)
public class RhinoInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy {
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {

public RhinoInstrumentation() {
super(INSTRUMENTATION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

@AutoService(InstrumenterModule.class)
public class ConsumeServiceInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy{
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice{
public ConsumeServiceInstrumentation() {
super("rocketmq-5.0");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

@AutoService(InstrumenterModule.class)
public class ConsumerImplInstrumentation extends InstrumenterModule.Tracing
implements Instrumenter.ForTypeHierarchy{
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice{

public static final String CLASS_NAME = "org.apache.rocketmq.client.java.impl.consumer.ConsumerImpl";

Expand Down
Loading

0 comments on commit 1f98e1a

Please sign in to comment.