diff --git a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/DefaultConnectionPoolTaskInstrumentation.java b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/DefaultConnectionPoolTaskInstrumentation.java index 2d142c66a7..b5df18ed04 100644 --- a/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/DefaultConnectionPoolTaskInstrumentation.java +++ b/instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/DefaultConnectionPoolTaskInstrumentation.java @@ -34,6 +34,10 @@ public class DefaultConnectionPoolTaskInstrumentation implements TypeInstrumenta transformer.applyAdviceToMethod( isConstructor().and(takesArgument(3, Consumer.class)), this.getClass().getName() + "$TaskArg3Advice"); + // since 5.6.0 + transformer.applyAdviceToMethod( + isConstructor().and(takesArgument(4, Consumer.class)), + this.getClass().getName() + "$TaskArg4Advice"); } @SuppressWarnings("unused") @@ -55,4 +59,14 @@ public class DefaultConnectionPoolTaskInstrumentation implements TypeInstrumenta action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action); } } + + @SuppressWarnings("unused") + public static class TaskArg4Advice { + + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void wrapCallback( + @Advice.Argument(value = 4, readOnly = false) Consumer action) { + action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action); + } + } }