From b558c5022925dcbfe71cba756f37ce4de5507b64 Mon Sep 17 00:00:00 2001 From: Richard Startin Date: Tue, 23 Jun 2020 09:40:53 +0100 Subject: [PATCH] Add missing classloader matchers for expensive matchers (DataDog/dd-trace-java#1617) --- .../instrumentation/jdbc/ConnectionInstrumentation.java | 6 ++++++ .../auto/instrumentation/jdbc/DriverInstrumentation.java | 6 ++++++ .../jdbc/PreparedStatementInstrumentation.java | 6 ++++++ .../auto/instrumentation/jdbc/StatementInstrumentation.java | 6 ++++++ .../instrumentation/rediscala/RediscalaInstrumentation.java | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/ConnectionInstrumentation.java b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/ConnectionInstrumentation.java index 0069554958..35f1d1503f 100644 --- a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/ConnectionInstrumentation.java +++ b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/ConnectionInstrumentation.java @@ -16,6 +16,7 @@ package io.opentelemetry.auto.instrumentation.jdbc; +import static io.opentelemetry.auto.tooling.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.hasInterface; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; @@ -40,6 +41,11 @@ public final class ConnectionInstrumentation extends Instrumenter.Default { super("jdbc"); } + @Override + public ElementMatcher classLoaderMatcher() { + return hasClassesNamed("java.sql.Connection"); + } + @Override public ElementMatcher typeMatcher() { return implementsInterface(named("java.sql.Connection")); diff --git a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/DriverInstrumentation.java b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/DriverInstrumentation.java index 03409682db..b3d4306c7f 100644 --- a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/DriverInstrumentation.java +++ b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/DriverInstrumentation.java @@ -16,6 +16,7 @@ package io.opentelemetry.auto.instrumentation.jdbc; +import static io.opentelemetry.auto.tooling.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; @@ -42,6 +43,11 @@ public final class DriverInstrumentation extends Instrumenter.Default { super("jdbc"); } + @Override + public ElementMatcher classLoaderMatcher() { + return hasClassesNamed("java.sql.Driver"); + } + @Override public ElementMatcher typeMatcher() { return implementsInterface(named("java.sql.Driver")); diff --git a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/PreparedStatementInstrumentation.java b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/PreparedStatementInstrumentation.java index d19bb2eb28..4d2c6883d1 100644 --- a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/PreparedStatementInstrumentation.java +++ b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/PreparedStatementInstrumentation.java @@ -17,6 +17,7 @@ package io.opentelemetry.auto.instrumentation.jdbc; import static io.opentelemetry.auto.instrumentation.jdbc.JdbcTracer.TRACER; +import static io.opentelemetry.auto.tooling.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -43,6 +44,11 @@ public final class PreparedStatementInstrumentation extends Instrumenter.Default super("jdbc"); } + @Override + public ElementMatcher classLoaderMatcher() { + return hasClassesNamed("java.sql.PreparedStatement"); + } + @Override public ElementMatcher typeMatcher() { return implementsInterface(named("java.sql.PreparedStatement")); diff --git a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/StatementInstrumentation.java b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/StatementInstrumentation.java index b47c560de1..61ac41dc43 100644 --- a/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/StatementInstrumentation.java +++ b/instrumentation/jdbc/src/main/java/io/opentelemetry/auto/instrumentation/jdbc/StatementInstrumentation.java @@ -17,6 +17,7 @@ package io.opentelemetry.auto.instrumentation.jdbc; import static io.opentelemetry.auto.instrumentation.jdbc.JdbcTracer.TRACER; +import static io.opentelemetry.auto.tooling.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.implementsInterface; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -43,6 +44,11 @@ public final class StatementInstrumentation extends Instrumenter.Default { super("jdbc"); } + @Override + public ElementMatcher classLoaderMatcher() { + return hasClassesNamed("java.sql.Statement"); + } + @Override public ElementMatcher typeMatcher() { return implementsInterface(named("java.sql.Statement")); diff --git a/instrumentation/rediscala-1.8/src/main/java/io/opentelemetry/auto/instrumentation/rediscala/RediscalaInstrumentation.java b/instrumentation/rediscala-1.8/src/main/java/io/opentelemetry/auto/instrumentation/rediscala/RediscalaInstrumentation.java index 4ebaee934e..be5c980d1c 100644 --- a/instrumentation/rediscala-1.8/src/main/java/io/opentelemetry/auto/instrumentation/rediscala/RediscalaInstrumentation.java +++ b/instrumentation/rediscala-1.8/src/main/java/io/opentelemetry/auto/instrumentation/rediscala/RediscalaInstrumentation.java @@ -18,6 +18,7 @@ package io.opentelemetry.auto.instrumentation.rediscala; import static io.opentelemetry.auto.instrumentation.rediscala.RediscalaClientDecorator.DECORATE; import static io.opentelemetry.auto.instrumentation.rediscala.RediscalaClientDecorator.TRACER; +import static io.opentelemetry.auto.tooling.ClassLoaderMatcher.hasClassesNamed; import static io.opentelemetry.auto.tooling.bytebuddy.matcher.AgentElementMatchers.safeHasSuperType; import static io.opentelemetry.auto.tooling.matcher.NameMatchers.namedOneOf; import static io.opentelemetry.trace.Span.Kind.CLIENT; @@ -51,6 +52,11 @@ public final class RediscalaInstrumentation extends Instrumenter.Default { super("rediscala", "redis"); } + @Override + public ElementMatcher classLoaderMatcher() { + return hasClassesNamed("redis.Request"); + } + @Override public ElementMatcher typeMatcher() { return safeHasSuperType(