From 347002c0f668f6fffae71dc08c698a9a005652c9 Mon Sep 17 00:00:00 2001 From: Qiyang Huang Date: Wed, 19 Sep 2018 14:37:25 -0400 Subject: [PATCH 1/2] Muzzle Spymemcached Add muzzle block and remove class loader matcher method. --- .../spymemcached-2.12/spymemcached-2.12.gradle | 17 +++++++---------- .../MemcachedClientInstrumentation.java | 10 ---------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle b/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle index ffe7470780..40c7f2875d 100644 --- a/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle +++ b/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle @@ -1,13 +1,10 @@ -apply plugin: 'version-scan' - -versionScan { - group = "net.spy" - module = 'spymemcached' - versions = "[1.12.0,)" - scanMethods = true - verifyPresent = [ - "net.spy.memcached.ConnectionFactoryBuilder": "setListenerExecutorService", - ] +muzzle { + pass { + group = "net.spy" + module = 'spymemcached' + versions = "[2.10.0,)" + assertInverse = true + } } apply from: "${rootDir}/gradle/java.gradle" diff --git a/dd-java-agent/instrumentation/spymemcached-2.12/src/main/java/datadog/trace/instrumentation/spymemcached/MemcachedClientInstrumentation.java b/dd-java-agent/instrumentation/spymemcached-2.12/src/main/java/datadog/trace/instrumentation/spymemcached/MemcachedClientInstrumentation.java index 1d0a81d30e..3cb8badc0e 100644 --- a/dd-java-agent/instrumentation/spymemcached-2.12/src/main/java/datadog/trace/instrumentation/spymemcached/MemcachedClientInstrumentation.java +++ b/dd-java-agent/instrumentation/spymemcached-2.12/src/main/java/datadog/trace/instrumentation/spymemcached/MemcachedClientInstrumentation.java @@ -1,6 +1,5 @@ package datadog.trace.instrumentation.spymemcached; -import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClassWithMethod; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -38,15 +37,6 @@ public final class MemcachedClientInstrumentation extends Instrumenter.Default { return named(MEMCACHED_PACKAGE + ".MemcachedClient"); } - @Override - public ElementMatcher classLoaderMatcher() { - // Target 2.12 that has this method - return classLoaderHasClassWithMethod( - MEMCACHED_PACKAGE + ".ConnectionFactoryBuilder", - "setListenerExecutorService", - "java.util.concurrent.ExecutorService"); - } - @Override public String[] helperClassNames() { return new String[] { From 827b721ae4ac549d32218a089c538c3950b5910a Mon Sep 17 00:00:00 2001 From: Gary Date: Wed, 26 Sep 2018 14:26:58 -0400 Subject: [PATCH 2/2] add comment about build vs muzzle versions --- .../instrumentation/spymemcached-2.12/spymemcached-2.12.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle b/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle index 40c7f2875d..7c2f33bd44 100644 --- a/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle +++ b/dd-java-agent/instrumentation/spymemcached-2.12/spymemcached-2.12.gradle @@ -1,3 +1,5 @@ +// building and testing against 2.12 because setListenerExecutorService exists to facilitate easier +// testing. Instrumentation should work since 2.10 muzzle { pass { group = "net.spy"