diff --git a/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentation.java b/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentation.java index 6fbf9111f1fd..f41658315157 100644 --- a/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentation.java +++ b/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentation.java @@ -14,6 +14,7 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.r2dbc.spi.ConnectionFactory; import io.r2dbc.spi.ConnectionFactoryOptions; +import javax.annotation.Nullable; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,14 +39,17 @@ public void transform(TypeTransformer transformer) { @SuppressWarnings("unused") public static class FactoryAdvice { + @Advice.AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) - public static void methodExit( - @Advice.Return(readOnly = false) ConnectionFactory factory, + public static ConnectionFactory methodExit( + @Advice.Return @Nullable ConnectionFactory factory, @Advice.Argument(0) ConnectionFactoryOptions factoryOptions) { - if (factory != null) { - factory = R2dbcSingletons.telemetry().wrapConnectionFactory(factory, factoryOptions); + if (factory == null) { + return null; } + + return R2dbcSingletons.telemetry().wrapConnectionFactory(factory, factoryOptions); } } } diff --git a/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentationModule.java b/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentationModule.java index 577aa4f6495a..50e31f32b14a 100644 --- a/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentationModule.java +++ b/instrumentation/r2dbc-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/r2dbc/v1_0/R2dbcInstrumentationModule.java @@ -8,11 +8,13 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule; import java.util.Collections; import java.util.List; @AutoService(InstrumentationModule.class) -public class R2dbcInstrumentationModule extends InstrumentationModule { +public class R2dbcInstrumentationModule extends InstrumentationModule + implements ExperimentalInstrumentationModule { public R2dbcInstrumentationModule() { super("r2dbc", "r2dbc-1.0"); @@ -22,4 +24,9 @@ public R2dbcInstrumentationModule() { public List typeInstrumentations() { return Collections.singletonList(new R2dbcInstrumentation()); } + + @Override + public boolean isIndyReady() { + return true; + } }