From cd81735373adec3c33d1a3843b52f7243cbd0cad Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Mon, 18 May 2026 17:03:24 +0200 Subject: [PATCH] Tolerate AbstractMethodError for servletRequest remote port --- .../servlet3/Servlet3Decorator.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java b/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java index 61a8d22a2b8..9db2d47d437 100644 --- a/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java +++ b/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java @@ -1,5 +1,7 @@ package datadog.trace.instrumentation.servlet3; +import static datadog.trace.api.telemetry.LogCollector.EXCLUDE_TELEMETRY; + import datadog.context.Context; import datadog.trace.api.ClassloaderConfigurationOverrides; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; @@ -10,6 +12,8 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Servlet3Decorator extends HttpServerDecorator< @@ -21,6 +25,7 @@ public class Servlet3Decorator UTF8BytesString.create(DECORATE.operationName()); public static final String DD_CONTEXT_PATH_ATTRIBUTE = "datadog.context.path"; public static final String DD_SERVLET_PATH_ATTRIBUTE = "datadog.servlet.path"; + private static final Logger LOGGER = LoggerFactory.getLogger(Servlet3Decorator.class); @Override protected String[] instrumentationNames() { @@ -64,7 +69,15 @@ protected String peerHostIP(final HttpServletRequest httpServletRequest) { @Override protected int peerPort(final HttpServletRequest httpServletRequest) { - return httpServletRequest.getRemotePort(); + try { + return httpServletRequest.getRemotePort(); + } catch (AbstractMethodError e) { + LOGGER.debug( + EXCLUDE_TELEMETRY, + "Method not implemented when trying to get the request remote port", + e); + return 0; // 0 will be handled as `no port` by the caller + } } @Override