From 7bf85dbb970d66ef0a3a0fdd48e4fea65793fedf Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Thu, 5 Mar 2020 16:01:53 -0800 Subject: [PATCH] Restrict dispatcher instrumentation to 2 arguments To reduce risk of duplicate spans when delegating to a 2+ arg method. --- .../servlet/dispatcher/RequestDispatcherInstrumentation.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java index af5a4f5e02..845b438df1 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java @@ -14,6 +14,7 @@ import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; @@ -65,6 +66,7 @@ public final class RequestDispatcherInstrumentation extends Instrumenter.Default return singletonMap( named("forward") .or(named("include")) + .and(takesArguments(2)) .and(takesArgument(0, named("javax.servlet.ServletRequest"))) .and(takesArgument(1, named("javax.servlet.ServletResponse"))) .and(isPublic()),