From ccee63574d554d650eeb63f190f7b88cf01df9b0 Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Mon, 11 Feb 2019 16:23:08 -0800 Subject: [PATCH] Exclude several type identifications from instrumentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I considered excluding Interfaces too, but that would break people that added `@Trace` to their default methods. Just a hunch, but I don’t think we want to instrument classes marked as synthetic, for example proxies. We may want to extend this to our method matchers (and maybe exclude native methods too). We might want to instrument enums/annotations, but that seems unlikely. --- .../java/datadog/trace/agent/tooling/AgentInstaller.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java index 8ecb720b18..687a151e1b 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java @@ -18,6 +18,7 @@ import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.agent.builder.ResettableClassFileTransformer; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.dynamic.DynamicType; +import net.bytebuddy.matcher.ElementMatchers; import net.bytebuddy.utility.JavaModule; @Slf4j @@ -64,6 +65,12 @@ public class AgentInstaller { // https://github.com/raphw/byte-buddy/issues/558 // .with(AgentBuilder.LambdaInstrumentationStrategy.ENABLED) .ignore(any(), skipClassLoader()) + // Unlikely to ever need to instrument an annotation: + .or(ElementMatchers.isAnnotation()) + // Unlikely to ever need to instrument an enum: + .or(ElementMatchers.isEnum()) + // Exclude generated classes like proxies: + .or(ElementMatchers.isSynthetic()) .or( nameStartsWith("datadog.trace.") // FIXME: We should remove this once