From 3bcbacc8d2fc8d556fc61bb251a97793021c5db8 Mon Sep 17 00:00:00 2001 From: Shelby Huang <48885776+huange7@users.noreply.github.com> Date: Thu, 29 Aug 2024 04:48:45 +0800 Subject: [PATCH] Fix play-mvc\methods NullPointerException (#12121) --- .../instrumentation/methods/MethodInstrumentation.java | 3 +++ .../instrumentation/play/v2_4/ActionInstrumentation.java | 3 +++ .../instrumentation/play/v2_6/ActionInstrumentation.java | 3 +++ 3 files changed, 9 insertions(+) diff --git a/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java b/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java index 50bbc17664..126101bd1c 100644 --- a/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java +++ b/instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentation.java @@ -79,6 +79,9 @@ public class MethodInstrumentation implements TypeInstrumentation { @Advice.Local("otelScope") Scope scope, @Advice.Return(typing = Assigner.Typing.DYNAMIC, readOnly = false) Object returnValue, @Advice.Thrown Throwable throwable) { + if (scope == null) { + return; + } scope.close(); returnValue = diff --git a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java index 191cc6f838..4d376817c6 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java +++ b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/ActionInstrumentation.java @@ -71,6 +71,9 @@ public class ActionInstrumentation implements TypeInstrumentation { @Advice.Return(readOnly = false) Future responseFuture, @Advice.Local("otelContext") Context context, @Advice.Local("otelScope") Scope scope) { + if (scope == null) { + return; + } scope.close(); updateSpan(context, req); diff --git a/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/ActionInstrumentation.java b/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/ActionInstrumentation.java index 3e0a7bca0d..dd82526a58 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/ActionInstrumentation.java +++ b/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/ActionInstrumentation.java @@ -71,6 +71,9 @@ public class ActionInstrumentation implements TypeInstrumentation { @Advice.Return(readOnly = false) Future responseFuture, @Advice.Local("otelContext") Context context, @Advice.Local("otelScope") Scope scope) { + if (scope == null) { + return; + } scope.close(); updateSpan(context, req);