diff --git a/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/ResultsStatusApplyAdvice.java b/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/ResultsStatusApplyAdvice.java index 295dd770eaf..a08125be6f4 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/ResultsStatusApplyAdvice.java +++ b/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/ResultsStatusApplyAdvice.java @@ -20,8 +20,8 @@ public class ResultsStatusApplyAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) - static void after( - @Advice.Argument(0) final Object content, @ActiveRequestContext RequestContext reqCtx) { + static void before( + @Advice.Argument(0) final Object content, @ActiveRequestContext final RequestContext reqCtx) { if (!(content instanceof JsValue)) { return; diff --git a/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/StatusHeaderSendJsonAdvice.java b/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/StatusHeaderSendJsonAdvice.java index 526eed0deaf..49631869020 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/StatusHeaderSendJsonAdvice.java +++ b/dd-java-agent/instrumentation/play-2.4/src/main/java_play25/datadog/trace/instrumentation/play25/appsec/StatusHeaderSendJsonAdvice.java @@ -21,15 +21,10 @@ public class StatusHeaderSendJsonAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) - static void before() { - CallDepthThreadLocalMap.incrementCallDepth(StatusHeader.class); - } + static void before( + @Advice.Argument(0) final JsonNode json, @ActiveRequestContext final RequestContext reqCtx) { - @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) - static void after( - @Advice.Argument(0) final JsonNode json, @ActiveRequestContext RequestContext reqCtx) { - final int depth = CallDepthThreadLocalMap.decrementCallDepth(StatusHeader.class); - if (depth > 0) { + if (CallDepthThreadLocalMap.incrementCallDepth(StatusHeader.class) > 0) { return; } @@ -64,4 +59,9 @@ static void after( throw new BlockingException("Blocked request (for StatusHeader/sendJson)"); } } + + @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) + static void after() { + CallDepthThreadLocalMap.decrementCallDepth(StatusHeader.class); + } } diff --git a/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/appsec/StatusHeaderInstrumentation.java b/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/appsec/StatusHeaderInstrumentation.java index 71e8058fb17..dd096409428 100644 --- a/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/appsec/StatusHeaderInstrumentation.java +++ b/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/appsec/StatusHeaderInstrumentation.java @@ -58,15 +58,11 @@ public void methodAdvice(MethodTransformer transformer) { public static class StatusHeaderSendJsonAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) - static void before() { - CallDepthThreadLocalMap.incrementCallDepth(StatusHeader.class); - } + static void before( + @Advice.Argument(0) final JsonNode json, + @ActiveRequestContext final RequestContext reqCtx) { - @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) - static void after( - @Advice.Argument(0) final JsonNode json, @ActiveRequestContext RequestContext reqCtx) { - final int depth = CallDepthThreadLocalMap.decrementCallDepth(StatusHeader.class); - if (depth > 0) { + if (CallDepthThreadLocalMap.incrementCallDepth(StatusHeader.class) > 0) { return; } @@ -102,4 +98,9 @@ static void after( } } } + + @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) + static void after() { + CallDepthThreadLocalMap.decrementCallDepth(StatusHeader.class); + } }