diff --git a/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureHttpClientInstrumentation.java b/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureHttpClientInstrumentation.java index b9e31440d9..0fc74235ab 100644 --- a/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureHttpClientInstrumentation.java +++ b/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureHttpClientInstrumentation.java @@ -15,6 +15,7 @@ import com.azure.core.http.HttpResponse; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import reactor.core.publisher.Mono; @@ -39,9 +40,10 @@ public class AzureHttpClientInstrumentation implements TypeInstrumentation { @SuppressWarnings("unused") public static class SuppressNestedClientAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) - public static void methodExit(@Advice.Return(readOnly = false) Mono mono) { - mono = new SuppressNestedClientMono<>(mono); + public static Mono methodExit(@Advice.Return Mono mono) { + return new SuppressNestedClientMono<>(mono); } } } diff --git a/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkInstrumentationModule.java b/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkInstrumentationModule.java index 7eeb61f87b..05ae6a5015 100644 --- a/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkInstrumentationModule.java +++ b/instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkInstrumentationModule.java @@ -77,4 +77,9 @@ public class AzureSdkInstrumentationModule extends InstrumentationModule // Nothing to instrument, no methods to match } } + + @Override + public boolean isIndyReady() { + return true; + } } diff --git a/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureHttpClientInstrumentation.java b/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureHttpClientInstrumentation.java index 198c7588d8..56c497a843 100644 --- a/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureHttpClientInstrumentation.java +++ b/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureHttpClientInstrumentation.java @@ -15,6 +15,7 @@ import com.azure.core.http.HttpResponse; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import reactor.core.publisher.Mono; @@ -39,9 +40,10 @@ public class AzureHttpClientInstrumentation implements TypeInstrumentation { @SuppressWarnings("unused") public static class SuppressNestedClientAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) - public static void methodExit(@Advice.Return(readOnly = false) Mono mono) { - mono = new SuppressNestedClientMono<>(mono); + public static Mono methodExit(@Advice.Return Mono mono) { + return new SuppressNestedClientMono<>(mono); } } } diff --git a/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkInstrumentationModule.java b/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkInstrumentationModule.java index 3fb14c6001..01d95c5e42 100644 --- a/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkInstrumentationModule.java +++ b/instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkInstrumentationModule.java @@ -77,4 +77,9 @@ public class AzureSdkInstrumentationModule extends InstrumentationModule // Nothing to instrument, no methods to match } } + + @Override + public boolean isIndyReady() { + return true; + } } diff --git a/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureHttpClientInstrumentation.java b/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureHttpClientInstrumentation.java index 9cce8f85e7..fe09ad6cfe 100644 --- a/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureHttpClientInstrumentation.java +++ b/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureHttpClientInstrumentation.java @@ -18,7 +18,9 @@ import com.azure.core.http.HttpResponse; import io.opentelemetry.context.Scope; 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 reactor.core.publisher.Mono; @@ -50,27 +52,26 @@ public class AzureHttpClientInstrumentation implements TypeInstrumentation { @SuppressWarnings("unused") public static class SuppressNestedClientMonoAdvice { + @AssignReturned.ToReturned @Advice.OnMethodExit(suppress = Throwable.class) - public static void asyncSendExit( + public static Mono asyncSendExit( @Advice.Argument(1) com.azure.core.util.Context azContext, - @Advice.Return(readOnly = false) Mono mono) { - mono = disallowNestedClientSpanMono(mono, azContext); + @Advice.Return Mono mono) { + return disallowNestedClientSpanMono(mono, azContext); } } @SuppressWarnings("unused") public static class SuppressNestedClientSyncAdvice { + @Nullable @Advice.OnMethodEnter(suppress = Throwable.class) - public static void syncSendEnter( - @Advice.Argument(1) com.azure.core.util.Context azContext, - @Advice.Local("otelScope") Scope scope) { - scope = disallowNestedClientSpanSync(azContext); + public static Scope syncSendEnter(@Advice.Argument(1) com.azure.core.util.Context azContext) { + return disallowNestedClientSpanSync(azContext); } @Advice.OnMethodExit(suppress = Throwable.class) - public static void syncSendExit( - @Advice.Return HttpResponse response, @Advice.Local("otelScope") Scope scope) { + public static void syncSendExit(@Advice.Enter @Nullable Scope scope) { if (scope != null) { scope.close(); } diff --git a/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkInstrumentationModule.java b/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkInstrumentationModule.java index 665ace5d14..fb8fa767f0 100644 --- a/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkInstrumentationModule.java +++ b/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkInstrumentationModule.java @@ -77,4 +77,9 @@ public class AzureSdkInstrumentationModule extends InstrumentationModule // Nothing to instrument, no methods to match } } + + @Override + public boolean isIndyReady() { + return true; + } } diff --git a/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/SuppressNestedClientHelper.java b/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/SuppressNestedClientHelper.java index 23b51987ca..2389e16158 100644 --- a/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/SuppressNestedClientHelper.java +++ b/instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/SuppressNestedClientHelper.java @@ -11,11 +11,13 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.internal.SpanKey; +import javax.annotation.Nullable; import reactor.core.CoreSubscriber; import reactor.core.publisher.Mono; public class SuppressNestedClientHelper { + @Nullable public static Scope disallowNestedClientSpanSync(com.azure.core.util.Context azContext) { Context parentContext = currentContext(); boolean hasAzureClientSpan = azContext.getData("client-method-call-flag").isPresent();