From 8a83844245ba941e0f80a586d992489fb298596a Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Fri, 24 Jun 2022 22:38:38 +0200 Subject: [PATCH] Log a warning when GlobalOpenTelemetry#resetForTest() is called (#6212) --- .../OpenTelemetryInstrumentation.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java index 7dc807dede..b4b5ef760d 100644 --- a/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java +++ b/instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryInstrumentation.java @@ -45,6 +45,9 @@ public class OpenTelemetryInstrumentation implements TypeInstrumentation { .and(takesArguments(1)) .and(takesArgument(0, named("application.io.opentelemetry.api.OpenTelemetry"))), OpenTelemetryInstrumentation.class.getName() + "$SetAdvice"); + transformer.applyAdviceToMethod( + isMethod().and(isStatic()).and(named("resetForTest")).and(takesArguments(0)), + OpenTelemetryInstrumentation.class.getName() + "$ResetForTestAdvice"); } @SuppressWarnings("unused") @@ -77,4 +80,19 @@ public class OpenTelemetryInstrumentation implements TypeInstrumentation { new Throwable()); } } + + @SuppressWarnings("unused") + public static class ResetForTestAdvice { + + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter() { + Logger.getLogger(application.io.opentelemetry.api.GlobalOpenTelemetry.class.getName()) + .log( + WARNING, + "You are currently using the OpenTelemetry Instrumentation Java Agent;" + + " all GlobalOpenTelemetry.resetForTest calls are ignored - the agent provides" + + " the global OpenTelemetry object used by your application.", + new Throwable()); + } + } }