From 727eabfcdd00fedb5ec53eae0c5146470aefc6c1 Mon Sep 17 00:00:00 2001 From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com> Date: Tue, 21 Oct 2025 11:39:33 +0200 Subject: [PATCH] make hystrix indy-ready --- .../HystrixCommandInstrumentation.java | 20 +++++++++++-------- .../hystrix/HystrixInstrumentationModule.java | 5 +++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixCommandInstrumentation.java b/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixCommandInstrumentation.java index ed3ea1b47d95..4ebf2d73a268 100644 --- a/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixCommandInstrumentation.java +++ b/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixCommandInstrumentation.java @@ -16,7 +16,9 @@ import io.opentelemetry.instrumentation.rxjava.v1_0.TracedOnSubscribe; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import javax.annotation.Nullable; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import rx.Observable; @@ -48,28 +50,30 @@ public void transform(TypeTransformer transformer) { @SuppressWarnings("unused") public static class ExecuteAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void stopSpan( + public static Observable stopSpan( @Advice.This HystrixInvokableInfo command, - @Advice.Return(readOnly = false) Observable result, - @Advice.Thrown Throwable throwable) { + @Advice.Return @Nullable Observable result, + @Advice.Thrown @Nullable Throwable throwable) { HystrixRequest request = HystrixRequest.create(command, "execute"); - result = Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); + return Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); } } @SuppressWarnings("unused") public static class FallbackAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void stopSpan( + public static Observable stopSpan( @Advice.This HystrixInvokableInfo command, - @Advice.Return(readOnly = false) Observable result, - @Advice.Thrown Throwable throwable) { + @Advice.Return @Nullable Observable result, + @Advice.Thrown @Nullable Throwable throwable) { HystrixRequest request = HystrixRequest.create(command, "fallback"); - result = Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); + return Observable.create(new TracedOnSubscribe<>(result, instrumenter(), request)); } } } diff --git a/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java b/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java index 6b3b7bdcb4cc..262d4f7842bb 100644 --- a/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java +++ b/instrumentation/hystrix-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hystrix/HystrixInstrumentationModule.java @@ -35,4 +35,9 @@ public List typeInstrumentations() { public List injectedClassNames() { return singletonList("rx.OpenTelemetryTracingUtil"); } + + @Override + public boolean isIndyReady() { + return true; + } }