From c1e442336317c961ec2e5e71d29c184eef453d63 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 24 Oct 2025 10:23:28 +0200 Subject: [PATCH 1/2] Migrating R2dbcInstrumentation --- .../r2dbc/v1_0/R2dbcInstrumentation.java | 14 ++++++++++---- .../r2dbc/v1_0/R2dbcInstrumentationModule.java | 9 ++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) 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..1981acdde6ec 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 @@ -38,14 +38,20 @@ 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 ConnectionFactory factory, @Advice.Argument(0) ConnectionFactoryOptions factoryOptions) { - if (factory != null) { - factory = R2dbcSingletons.telemetry().wrapConnectionFactory(factory, factoryOptions); + ConnectionFactory modifiedFactory = factory; + + if (modifiedFactory != null) { + modifiedFactory = + R2dbcSingletons.telemetry().wrapConnectionFactory(modifiedFactory, factoryOptions); } + + return modifiedFactory; } } } 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; + } } From 6681350b68d76cd8680ae00cd27ed0502b618f60 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:20:14 +0200 Subject: [PATCH 2/2] Checking if factory is null --- .../r2dbc/v1_0/R2dbcInstrumentation.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) 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 1981acdde6ec..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; @@ -41,17 +42,14 @@ public static class FactoryAdvice { @Advice.AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) public static ConnectionFactory methodExit( - @Advice.Return ConnectionFactory factory, + @Advice.Return @Nullable ConnectionFactory factory, @Advice.Argument(0) ConnectionFactoryOptions factoryOptions) { - ConnectionFactory modifiedFactory = factory; - - if (modifiedFactory != null) { - modifiedFactory = - R2dbcSingletons.telemetry().wrapConnectionFactory(modifiedFactory, factoryOptions); + if (factory == null) { + return null; } - return modifiedFactory; + return R2dbcSingletons.telemetry().wrapConnectionFactory(factory, factoryOptions); } } }