Skip to content

Commit 01f2f80

Browse files
SylvainJugemznet
authored andcommitted
make hibernate-reactive indy-ready (open-telemetry#14863)
1 parent 6bc5ca5 commit 01f2f80

File tree

4 files changed

+31
-16
lines changed

4 files changed

+31
-16
lines changed

instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/HibernateReactiveMutinyInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class HibernateReactiveMutinyInstrumentationModule extends InstrumentationModule {
17+
public class HibernateReactiveMutinyInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719

1820
public HibernateReactiveMutinyInstrumentationModule() {
1921
super("hibernate-reactive", "hibernate-reactive-1.0", "hibernate-reactive-mutiny");
@@ -23,4 +25,9 @@ public HibernateReactiveMutinyInstrumentationModule() {
2325
public List<TypeInstrumentation> typeInstrumentations() {
2426
return singletonList(new MutinySessionFactoryInstrumentation());
2527
}
28+
29+
@Override
30+
public boolean isIndyReady() {
31+
return true;
32+
}
2633
}

instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/mutiny/MutinySessionFactoryInstrumentation.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1414
import io.smallrye.mutiny.Uni;
1515
import net.bytebuddy.asm.Advice;
16+
import net.bytebuddy.asm.Advice.AssignReturned;
1617
import net.bytebuddy.description.type.TypeDescription;
1718
import net.bytebuddy.matcher.ElementMatcher;
1819

@@ -34,9 +35,10 @@ public void transform(TypeTransformer transformer) {
3435

3536
@SuppressWarnings("unused")
3637
public static class ContextAdvice {
38+
@AssignReturned.ToReturned
3739
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
38-
public static void onExit(@Advice.Return(readOnly = false) Uni<?> uni) {
39-
uni = ContextOperator.plug(uni);
40+
public static Uni<?> onExit(@Advice.Return Uni<?> uni) {
41+
return ContextOperator.plug(uni);
4042
}
4143
}
4244
}

instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionFactoryInstrumentation.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import java.util.concurrent.CompletionStage;
1616
import java.util.function.Function;
1717
import net.bytebuddy.asm.Advice;
18+
import net.bytebuddy.asm.Advice.AssignReturned;
19+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1820
import net.bytebuddy.description.type.TypeDescription;
1921
import net.bytebuddy.matcher.ElementMatcher;
2022

@@ -39,27 +41,28 @@ public void transform(TypeTransformer transformer) {
3941

4042
@SuppressWarnings("unused")
4143
public static class Function0Advice {
44+
@AssignReturned.ToArguments(@ToArgument(0))
4245
@Advice.OnMethodEnter(suppress = Throwable.class)
43-
public static void onEnter(
44-
@Advice.Argument(value = 0, readOnly = false) Function<?, ?> function) {
45-
function = FunctionWrapper.wrap(function);
46+
public static Function<?, ?> onEnter(@Advice.Argument(0) Function<?, ?> function) {
47+
return FunctionWrapper.wrap(function);
4648
}
4749
}
4850

4951
@SuppressWarnings("unused")
5052
public static class Function1Advice {
53+
@AssignReturned.ToArguments(@ToArgument(1))
5154
@Advice.OnMethodEnter(suppress = Throwable.class)
52-
public static void onEnter(
53-
@Advice.Argument(value = 1, readOnly = false) Function<?, ?> function) {
54-
function = FunctionWrapper.wrap(function);
55+
public static Function<?, ?> onEnter(@Advice.Argument(1) Function<?, ?> function) {
56+
return FunctionWrapper.wrap(function);
5557
}
5658
}
5759

5860
@SuppressWarnings("unused")
5961
public static class OpenSessionAdvice {
62+
@AssignReturned.ToReturned
6063
@Advice.OnMethodExit(suppress = Throwable.class)
61-
public static void onExit(@Advice.Return(readOnly = false) CompletionStage<?> completionStage) {
62-
completionStage = CompletionStageWrapper.wrap(completionStage);
64+
public static CompletionStage<?> onExit(@Advice.Return CompletionStage<?> completionStage) {
65+
return CompletionStageWrapper.wrap(completionStage);
6366
}
6467
}
6568
}

instrumentation/hibernate/hibernate-reactive-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hibernate/reactive/v1_0/stage/StageSessionImplInstrumentation.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import java.util.concurrent.CompletionStage;
1616
import java.util.function.Function;
1717
import net.bytebuddy.asm.Advice;
18+
import net.bytebuddy.asm.Advice.AssignReturned;
19+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1820
import net.bytebuddy.description.type.TypeDescription;
1921
import net.bytebuddy.matcher.ElementMatcher;
2022

@@ -36,15 +38,16 @@ public void transform(TypeTransformer transformer) {
3638

3739
@SuppressWarnings("unused")
3840
public static class WithTransactionAdvice {
41+
@AssignReturned.ToArguments(@ToArgument(0))
3942
@Advice.OnMethodEnter(suppress = Throwable.class)
40-
public static void onEnter(
41-
@Advice.Argument(value = 0, readOnly = false) Function<?, ?> function) {
42-
function = FunctionWrapper.wrap(function);
43+
public static Function<?, ?> onEnter(@Advice.Argument(0) Function<?, ?> function) {
44+
return FunctionWrapper.wrap(function);
4345
}
4446

47+
@AssignReturned.ToReturned
4548
@Advice.OnMethodExit(suppress = Throwable.class)
46-
public static void onExit(@Advice.Return(readOnly = false) CompletionStage<?> completionStage) {
47-
completionStage = CompletionStageWrapper.wrap(completionStage);
49+
public static CompletionStage<?> onExit(@Advice.Return CompletionStage<?> completionStage) {
50+
return CompletionStageWrapper.wrap(completionStage);
4851
}
4952
}
5053
}

0 commit comments

Comments
 (0)