Skip to content

Commit 198a35d

Browse files
amarzialidevflow.devflow-routing-intake
andauthored
Tolerate AbstractMethodError for servletRequest remote port (#11403)
Tolerate AbstractMethodError for servletRequest remote port Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
1 parent 84a4aa9 commit 198a35d

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

  • dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/src/main/java/datadog/trace/instrumentation/servlet3

dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Decorator.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.instrumentation.servlet3;
22

3+
import static datadog.trace.api.telemetry.LogCollector.EXCLUDE_TELEMETRY;
4+
35
import datadog.context.Context;
46
import datadog.trace.api.ClassloaderConfigurationOverrides;
57
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
@@ -10,6 +12,8 @@
1012
import javax.servlet.ServletException;
1113
import javax.servlet.http.HttpServletRequest;
1214
import javax.servlet.http.HttpServletResponse;
15+
import org.slf4j.Logger;
16+
import org.slf4j.LoggerFactory;
1317

1418
public class Servlet3Decorator
1519
extends HttpServerDecorator<
@@ -21,6 +25,7 @@ public class Servlet3Decorator
2125
UTF8BytesString.create(DECORATE.operationName());
2226
public static final String DD_CONTEXT_PATH_ATTRIBUTE = "datadog.context.path";
2327
public static final String DD_SERVLET_PATH_ATTRIBUTE = "datadog.servlet.path";
28+
private static final Logger LOGGER = LoggerFactory.getLogger(Servlet3Decorator.class);
2429

2530
@Override
2631
protected String[] instrumentationNames() {
@@ -64,7 +69,15 @@ protected String peerHostIP(final HttpServletRequest httpServletRequest) {
6469

6570
@Override
6671
protected int peerPort(final HttpServletRequest httpServletRequest) {
67-
return httpServletRequest.getRemotePort();
72+
try {
73+
return httpServletRequest.getRemotePort();
74+
} catch (AbstractMethodError e) {
75+
LOGGER.debug(
76+
EXCLUDE_TELEMETRY,
77+
"Method not implemented when trying to get the request remote port",
78+
e);
79+
return 0; // 0 will be handled as `no port` by the caller
80+
}
6881
}
6982

7083
@Override

0 commit comments

Comments
 (0)