From d08c2f1852cda976a1d1f08895e4c322a88ac207 Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:56:01 +0200 Subject: [PATCH] make armeria indy-ready --- ...tStreamMessageSubscriptionInstrumentation.java | 15 +++++++++------ .../v1_3/ArmeriaInstrumentationModule.java | 9 ++++++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/AbstractStreamMessageSubscriptionInstrumentation.java b/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/AbstractStreamMessageSubscriptionInstrumentation.java index c106cce9bfe4..acf8c040480f 100644 --- a/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/AbstractStreamMessageSubscriptionInstrumentation.java +++ b/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/AbstractStreamMessageSubscriptionInstrumentation.java @@ -14,6 +14,8 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.concurrent.CompletableFuture; 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; import org.reactivestreams.Subscriber; @@ -52,20 +54,21 @@ public void transform(TypeTransformer transformer) { @SuppressWarnings("unused") public static class WrapSubscriberAdvice { + @AssignReturned.ToArguments(@ToArgument(1)) @Advice.OnMethodEnter(suppress = Throwable.class) - public static void wrapSubscriber( - @Advice.Argument(value = 1, readOnly = false) Subscriber subscriber) { - subscriber = SubscriberWrapper.wrap(subscriber); + public static Subscriber wrapSubscriber(@Advice.Argument(1) Subscriber subscriber) { + return SubscriberWrapper.wrap(subscriber); } } @SuppressWarnings("unused") public static class WrapCompletableFutureAdvice { + @AssignReturned.ToArguments(@ToArgument(4)) @Advice.OnMethodEnter(suppress = Throwable.class) - public static void wrapCompletableFuture( - @Advice.Argument(value = 4, readOnly = false) CompletableFuture future) { - future = CompletableFutureWrapper.wrap(future); + public static CompletableFuture wrapCompletableFuture( + @Advice.Argument(4) CompletableFuture future) { + return CompletableFutureWrapper.wrap(future); } } } diff --git a/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaInstrumentationModule.java b/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaInstrumentationModule.java index fc530b529d53..f64c9e4d3e94 100644 --- a/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaInstrumentationModule.java +++ b/instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaInstrumentationModule.java @@ -11,11 +11,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.List; import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) -public class ArmeriaInstrumentationModule extends InstrumentationModule { +public class ArmeriaInstrumentationModule extends InstrumentationModule + implements ExperimentalInstrumentationModule { public ArmeriaInstrumentationModule() { super("armeria", "armeria-1.3"); } @@ -33,4 +35,9 @@ public List typeInstrumentations() { new ArmeriaServerBuilderInstrumentation(), new AbstractStreamMessageSubscriptionInstrumentation()); } + + @Override + public boolean isIndyReady() { + return true; + } }