From 23d0439b128f39fa9ba0a7f11de1d6fa00fbe4bd Mon Sep 17 00:00:00 2001 From: Andrew Kent Date: Thu, 12 Jul 2018 17:25:17 -0400 Subject: [PATCH] Remove muzzle dead code, doc cleanup, and better logging --- buildSrc/src/main/groovy/MuzzlePlugin.groovy | 2 +- .../trace/agent/tooling/Instrumenter.java | 7 ++- .../tooling/muzzle/MuzzleGradlePlugin.java | 63 ------------------- .../ApacheHttpClientInstrumentation.java | 2 +- 4 files changed, 7 insertions(+), 67 deletions(-) diff --git a/buildSrc/src/main/groovy/MuzzlePlugin.groovy b/buildSrc/src/main/groovy/MuzzlePlugin.groovy index 3e4a502ef67..3c85179a393 100644 --- a/buildSrc/src/main/groovy/MuzzlePlugin.groovy +++ b/buildSrc/src/main/groovy/MuzzlePlugin.groovy @@ -4,7 +4,7 @@ import org.gradle.api.Project import java.lang.reflect.Method /** - * POC muzzle task plugin which runs muzzle validation against an instrumentation's compile-time dependencies. + * muzzle task plugin which runs muzzle validation against an instrumentation's compile-time dependencies. * *

TODO: merge this with version scan */ diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java index 3e3be407269..06f65dac343 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java @@ -90,15 +90,16 @@ public boolean matches( JavaModule module, Class classBeingRedefined, ProtectionDomain protectionDomain) { - // Optimization: calling getMuzzleReferenceMatcher() inside this method prevents unnecessary loading of muzzle references during agentBuilder setup. + // Optimization: calling getInstrumentationMuzzle() inside this method prevents unnecessary loading of muzzle references during agentBuilder setup. final ReferenceMatcher muzzle = getInstrumentationMuzzle(); if (null != muzzle) { List mismatches = muzzle.getMismatchedReferenceSources(classLoader); if (mismatches.size() > 0) { log.debug( - "Instrumentation muzzled: {} on {}", + "Instrumentation muzzled: {} -- {} on {}", instrumentationPrimaryName, + this.getClass().getName(), classLoader); } for (Reference.Mismatch mismatch : mismatches) { @@ -149,6 +150,8 @@ protected boolean defaultEnabled() { return getConfigEnabled("dd.integrations.enabled", true); } + // TODO: move common config helpers to Utils + public static String getPropOrEnv(final String name) { return System.getProperty(name, System.getenv(propToEnvName(name))); } diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/muzzle/MuzzleGradlePlugin.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/muzzle/MuzzleGradlePlugin.java index b2703ea16c3..ebaa6b7dfb6 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/muzzle/MuzzleGradlePlugin.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/muzzle/MuzzleGradlePlugin.java @@ -1,19 +1,10 @@ package datadog.trace.agent.tooling.muzzle; import datadog.trace.agent.tooling.Instrumenter; -import net.bytebuddy.asm.AsmVisitorWrapper; import net.bytebuddy.build.Plugin; -import net.bytebuddy.description.field.FieldDescription; -import net.bytebuddy.description.field.FieldList; -import net.bytebuddy.description.method.MethodList; import net.bytebuddy.description.type.TypeDefinition; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.dynamic.DynamicType.Builder; -import net.bytebuddy.implementation.Implementation; -import net.bytebuddy.jar.asm.ClassVisitor; -import net.bytebuddy.jar.asm.MethodVisitor; -import net.bytebuddy.jar.asm.Opcodes; -import net.bytebuddy.pool.TypePool; /** Bytebuddy gradle plugin which creates muzzle-references at compile time. */ public class MuzzleGradlePlugin implements Plugin { @@ -52,58 +43,4 @@ public Builder apply(Builder builder, TypeDescription typeDescription) { return builder; } } - - private static class RemoveFinalFlagVisitor implements AsmVisitorWrapper { - final String methodName; - - public RemoveFinalFlagVisitor(String methodName) { - this.methodName = methodName; - } - - @Override - public int mergeWriter(int flags) { - return flags; - } - - @Override - public int mergeReader(int flags) { - return flags; - } - - @Override - public ClassVisitor wrap( - TypeDescription instrumentedType, - ClassVisitor classVisitor, - Implementation.Context implementationContext, - TypePool typePool, - FieldList fields, - MethodList methods, - int writerFlags, - int readerFlags) { - return new Visitor(classVisitor); - } - - private class Visitor extends ClassVisitor { - public Visitor(ClassVisitor cv) { - super(Opcodes.ASM6, cv); - } - - @Override - public MethodVisitor visitMethod( - final int access, - final String name, - final String descriptor, - final String signature, - final String[] exceptions) { - MethodVisitor methodVisitor = - super.visitMethod(access, name, descriptor, signature, exceptions); - if (name.equals(methodName) && (access & Opcodes.ACC_FINAL) != 0) { - return super.visitMethod( - access ^ Opcodes.ACC_FINAL, name, descriptor, signature, exceptions); - } else { - return super.visitMethod(access, name, descriptor, signature, exceptions); - } - } - } - } } diff --git a/dd-java-agent/instrumentation/apache-httpclient-4.3/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java b/dd-java-agent/instrumentation/apache-httpclient-4.3/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java index 319f7ea30de..1efe58cd481 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-4.3/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java +++ b/dd-java-agent/instrumentation/apache-httpclient-4.3/src/main/java/datadog/trace/instrumentation/apachehttpclient/ApacheHttpClientInstrumentation.java @@ -45,7 +45,7 @@ public ElementMatcher classLoaderMatcher() { public String[] helperClassNames() { return new String[] { "datadog.trace.instrumentation.apachehttpclient.DDTracingClientExec", - "datadog.trace.instrumentation.apachehttpclient.DDTracingClientExec$HttpHeadersInjectAdapter", + "datadog.trace.instrumentation.apachehttpclient.DDTracingClientExec$HttpHeadersInjectAdapter" }; }