From f0d333c2ec8450de6caf0bde6b0cc4da61274b7a Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Fri, 19 Jan 2018 15:19:10 -0500 Subject: [PATCH] Defend against potential NPEs If `HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE` happens to be missing. --- .../springweb/SpringWebInstrumentation.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/SpringWebInstrumentation.java b/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/SpringWebInstrumentation.java index b4aaf9e4b3..a38b5cfcba 100644 --- a/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/SpringWebInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/SpringWebInstrumentation.java @@ -53,12 +53,14 @@ public final class SpringWebInstrumentation implements Instrumenter { @Advice.OnMethodEnter(suppress = Throwable.class) public static void nameResource(@Advice.Argument(0) final HttpServletRequest request) { final Scope scope = GlobalTracer.get().scopeManager().active(); - if (scope != null) { + if (scope != null && request != null) { final String method = request.getMethod(); - final String bestMatchingPattern = - request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString(); - final String resourceName = method + " " + bestMatchingPattern; - scope.span().setTag(DDTags.RESOURCE_NAME, resourceName); + final Object bestMatchingPattern = + request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); + if (method != null && bestMatchingPattern != null) { + final String resourceName = method + " " + bestMatchingPattern; + scope.span().setTag(DDTags.RESOURCE_NAME, resourceName); + } } } }