diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/HibernateReactiveMutinyInstrumentationModule.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/HibernateReactiveMutinyInstrumentationModule.java index 5aca6a790076..ceb2a9db6bcb 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/HibernateReactiveMutinyInstrumentationModule.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/HibernateReactiveMutinyInstrumentationModule.java @@ -10,10 +10,12 @@ 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.List; @AutoService(InstrumentationModule.class) -public class HibernateReactiveMutinyInstrumentationModule extends InstrumentationModule { +public class HibernateReactiveMutinyInstrumentationModule extends InstrumentationModule + implements ExperimentalInstrumentationModule { public HibernateReactiveMutinyInstrumentationModule() { super("hibernate-reactive", "hibernate-reactive-1.0", "hibernate-reactive-mutiny"); @@ -23,4 +25,9 @@ public HibernateReactiveMutinyInstrumentationModule() { public List typeInstrumentations() { return singletonList(new MutinySessionFactoryInstrumentation()); } + + @Override + public boolean isIndyReady() { + return true; + } } diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/MutinySessionFactoryInstrumentation.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/MutinySessionFactoryInstrumentation.java index c8bcea81fe41..1af4549fd514 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/MutinySessionFactoryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/MutinySessionFactoryInstrumentation.java @@ -13,6 +13,7 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.smallrye.mutiny.Uni; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -34,9 +35,10 @@ public void transform(TypeTransformer transformer) { @SuppressWarnings("unused") public static class ContextAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void onExit(@Advice.Return(readOnly = false) Uni uni) { - uni = ContextOperator.plug(uni); + public static Uni onExit(@Advice.Return Uni uni) { + return ContextOperator.plug(uni); } } } diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionFactoryInstrumentation.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionFactoryInstrumentation.java index 47154f9d1798..e09a4e3eb863 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionFactoryInstrumentation.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionFactoryInstrumentation.java @@ -15,6 +15,8 @@ import java.util.concurrent.CompletionStage; import java.util.function.Function; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; +import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -39,27 +41,28 @@ public void transform(TypeTransformer transformer) { @SuppressWarnings("unused") public static class Function0Advice { + @AssignReturned.ToArguments(@ToArgument(0)) @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Argument(value = 0, readOnly = false) Function function) { - function = FunctionWrapper.wrap(function); + public static Function onEnter(@Advice.Argument(0) Function function) { + return FunctionWrapper.wrap(function); } } @SuppressWarnings("unused") public static class Function1Advice { + @AssignReturned.ToArguments(@ToArgument(1)) @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Argument(value = 1, readOnly = false) Function function) { - function = FunctionWrapper.wrap(function); + public static Function onEnter(@Advice.Argument(1) Function function) { + return FunctionWrapper.wrap(function); } } @SuppressWarnings("unused") public static class OpenSessionAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) - public static void onExit(@Advice.Return(readOnly = false) CompletionStage completionStage) { - completionStage = CompletionStageWrapper.wrap(completionStage); + public static CompletionStage onExit(@Advice.Return CompletionStage completionStage) { + return CompletionStageWrapper.wrap(completionStage); } } } diff --git a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionImplInstrumentation.java b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionImplInstrumentation.java index fa92dd794780..fe2ab48cc108 100644 --- a/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionImplInstrumentation.java +++ b/instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionImplInstrumentation.java @@ -15,6 +15,8 @@ import java.util.concurrent.CompletionStage; import java.util.function.Function; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; +import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -36,15 +38,16 @@ public void transform(TypeTransformer transformer) { @SuppressWarnings("unused") public static class WithTransactionAdvice { + @AssignReturned.ToArguments(@ToArgument(0)) @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Argument(value = 0, readOnly = false) Function function) { - function = FunctionWrapper.wrap(function); + public static Function onEnter(@Advice.Argument(0) Function function) { + return FunctionWrapper.wrap(function); } + @AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) - public static void onExit(@Advice.Return(readOnly = false) CompletionStage completionStage) { - completionStage = CompletionStageWrapper.wrap(completionStage); + public static CompletionStage onExit(@Advice.Return CompletionStage completionStage) { + return CompletionStageWrapper.wrap(completionStage); } } }