From b5f49636f284862ec243c379ed77dd46577dd5a4 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 12 Aug 2022 18:41:18 +0300 Subject: [PATCH] Mongodb: avoid duplicate tracing (#6465) --- .../mongo/v3_1/MongoClientInstrumentationModule.java | 2 +- .../mongo/v3_1/MongoInstrumentationSingletons.java | 4 ++++ .../mongo/v3_7/MongoClientSettingsBuilderInstrumentation.java | 2 +- .../mongo/v3_7/MongoInstrumentationSingletons.java | 4 ++++ .../mongo/v4_0/MongoClientSettingsBuilderInstrumentation.java | 2 +- .../mongo/v4_0/MongoInstrumentationSingletons.java | 4 ++++ .../v3_3/MongoClientSettingsBuildersInstrumentation.java | 2 +- .../mongoasync/v3_3/MongoInstrumentationSingletons.java | 4 ++++ 8 files changed, 20 insertions(+), 4 deletions(-) diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java index d027261f1d..297dc69a4d 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoClientInstrumentationModule.java @@ -66,7 +66,7 @@ public class MongoClientInstrumentationModule extends InstrumentationModule { @Advice.This MongoClientOptions.Builder builder, @Advice.FieldValue("commandListeners") List commandListeners) { for (CommandListener commandListener : commandListeners) { - if (commandListener == MongoInstrumentationSingletons.LISTENER) { + if (MongoInstrumentationSingletons.isTracingListener(commandListener)) { return; } } diff --git a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java index d17068b3e9..522efa3241 100644 --- a/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_1/MongoInstrumentationSingletons.java @@ -14,5 +14,9 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = MongoTelemetry.create(GlobalOpenTelemetry.get()).newCommandListener(); + public static boolean isTracingListener(CommandListener listener) { + return listener.getClass().getName().equals(LISTENER.getClass().getName()); + } + private MongoInstrumentationSingletons() {} } diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientSettingsBuilderInstrumentation.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientSettingsBuilderInstrumentation.java index 82fac89822..24f77675b4 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientSettingsBuilderInstrumentation.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientSettingsBuilderInstrumentation.java @@ -49,7 +49,7 @@ final class MongoClientSettingsBuilderInstrumentation implements TypeInstrumenta @Advice.This MongoClientSettings.Builder builder, @Advice.FieldValue("commandListeners") List commandListeners) { for (CommandListener commandListener : commandListeners) { - if (commandListener == MongoInstrumentationSingletons.LISTENER) { + if (MongoInstrumentationSingletons.isTracingListener(commandListener)) { return; } } diff --git a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java index 7ed8dbed98..839998e4b4 100644 --- a/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoInstrumentationSingletons.java @@ -14,5 +14,9 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = MongoTelemetry.create(GlobalOpenTelemetry.get()).newCommandListener(); + public static boolean isTracingListener(CommandListener listener) { + return listener.getClass().getName().equals(LISTENER.getClass().getName()); + } + private MongoInstrumentationSingletons() {} } diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientSettingsBuilderInstrumentation.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientSettingsBuilderInstrumentation.java index 6060031bd9..065b342392 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientSettingsBuilderInstrumentation.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoClientSettingsBuilderInstrumentation.java @@ -49,7 +49,7 @@ final class MongoClientSettingsBuilderInstrumentation implements TypeInstrumenta @Advice.This MongoClientSettings.Builder builder, @Advice.FieldValue("commandListeners") List commandListeners) { for (CommandListener commandListener : commandListeners) { - if (commandListener == MongoInstrumentationSingletons.LISTENER) { + if (MongoInstrumentationSingletons.isTracingListener(commandListener)) { return; } } diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java index 47195e2de1..058bf53cb0 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/MongoInstrumentationSingletons.java @@ -14,5 +14,9 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = MongoTelemetry.create(GlobalOpenTelemetry.get()).newCommandListener(); + public static boolean isTracingListener(CommandListener listener) { + return listener.getClass().getName().equals(LISTENER.getClass().getName()); + } + private MongoInstrumentationSingletons() {} } diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoClientSettingsBuildersInstrumentation.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoClientSettingsBuildersInstrumentation.java index 2a82fd93b4..81f23d16cf 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoClientSettingsBuildersInstrumentation.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoClientSettingsBuildersInstrumentation.java @@ -51,7 +51,7 @@ final class MongoClientSettingsBuildersInstrumentation implements TypeInstrument @Advice.This MongoClientSettings.Builder builder, @Advice.FieldValue("commandListeners") List commandListeners) { for (CommandListener commandListener : commandListeners) { - if (commandListener == MongoInstrumentationSingletons.LISTENER) { + if (MongoInstrumentationSingletons.isTracingListener(commandListener)) { return; } } diff --git a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java index 388d8d776f..7ccd25635c 100644 --- a/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java +++ b/instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/MongoInstrumentationSingletons.java @@ -14,5 +14,9 @@ public final class MongoInstrumentationSingletons { public static final CommandListener LISTENER = MongoTelemetry.create(GlobalOpenTelemetry.get()).newCommandListener(); + public static boolean isTracingListener(CommandListener listener) { + return listener.getClass().getName().equals(LISTENER.getClass().getName()); + } + private MongoInstrumentationSingletons() {} }