diff --git a/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/OracleUcpInstrumentationModule.java b/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/OracleUcpInstrumentationModule.java index 0148eee1a2a0..4f3b6f1e5a94 100644 --- a/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/OracleUcpInstrumentationModule.java +++ b/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/OracleUcpInstrumentationModule.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 OracleUcpInstrumentationModule extends InstrumentationModule { +public class OracleUcpInstrumentationModule extends InstrumentationModule + implements ExperimentalInstrumentationModule { public OracleUcpInstrumentationModule() { super("oracle-ucp", "oracle-ucp-11.2"); @@ -23,4 +25,9 @@ public OracleUcpInstrumentationModule() { public List typeInstrumentations() { return singletonList(new UniversalConnectionPoolInstrumentation()); } + + @Override + public boolean isIndyReady() { + return true; + } } diff --git a/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/UniversalConnectionPoolInstrumentation.java b/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/UniversalConnectionPoolInstrumentation.java index e048a7badc41..841a9fe563e0 100644 --- a/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/UniversalConnectionPoolInstrumentation.java +++ b/instrumentation/oracle-ucp-11.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/oracleucp/v11_2/UniversalConnectionPoolInstrumentation.java @@ -53,19 +53,18 @@ public static void onExit(@Advice.This UniversalConnectionPool connectionPool) { public static class StopAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter(@Advice.Local("otelCallDepth") CallDepth callDepth) { - callDepth = CallDepth.forClass(UniversalConnectionPool.class); + public static CallDepth onEnter() { + CallDepth callDepth = CallDepth.forClass(UniversalConnectionPool.class); callDepth.getAndIncrement(); + return callDepth; } @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) public static void onExit( - @Advice.This UniversalConnectionPool connectionPool, - @Advice.Local("otelCallDepth") CallDepth callDepth) { - if (callDepth == null || callDepth.decrementAndGet() > 0) { + @Advice.This UniversalConnectionPool connectionPool, @Advice.Enter CallDepth callDepth) { + if (callDepth.decrementAndGet() > 0) { return; } - telemetry().unregisterMetrics(connectionPool); } }