From 4d41ca5dbe75fe845ceb490cba0feeff59a94c87 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 1 Aug 2024 21:37:34 +0300 Subject: [PATCH] Improve tomcat version detection (#11936) --- .../tomcat/v10_0/Tomcat10InstrumentationModule.java | 8 +++++++- .../tomcat/v7_0/Tomcat7InstrumentationModule.java | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/instrumentation/tomcat/tomcat-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/Tomcat10InstrumentationModule.java b/instrumentation/tomcat/tomcat-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/Tomcat10InstrumentationModule.java index 8184388267..0341609b0f 100644 --- a/instrumentation/tomcat/tomcat-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/Tomcat10InstrumentationModule.java +++ b/instrumentation/tomcat/tomcat-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/Tomcat10InstrumentationModule.java @@ -25,7 +25,13 @@ public class Tomcat10InstrumentationModule extends InstrumentationModule { @Override public ElementMatcher.Junction classLoaderMatcher() { // only matches tomcat 10.0+ - return hasClassesNamed("jakarta.servlet.http.HttpServletRequest"); + return hasClassesNamed("jakarta.servlet.http.HttpServletRequest") + .and( + // tomcat 10 has at least one of these two classes. Cache$EvictionOrder is present in + // 10.0.0, but is removed before 10.1.0. GenericUser is added before Cache$EvictionOrder + // is removed + hasClassesNamed("org.apache.catalina.users.GenericUser") + .or(hasClassesNamed("org.apache.catalina.webresources.Cache$EvictionOrder"))); } @Override diff --git a/instrumentation/tomcat/tomcat-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/Tomcat7InstrumentationModule.java b/instrumentation/tomcat/tomcat-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/Tomcat7InstrumentationModule.java index 2750dce8be..04e9c7a004 100644 --- a/instrumentation/tomcat/tomcat-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/Tomcat7InstrumentationModule.java +++ b/instrumentation/tomcat/tomcat-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/Tomcat7InstrumentationModule.java @@ -25,7 +25,8 @@ public class Tomcat7InstrumentationModule extends InstrumentationModule { @Override public ElementMatcher.Junction classLoaderMatcher() { // does not match tomcat 10.0+ - return hasClassesNamed("javax.servlet.http.HttpServletRequest"); + return hasClassesNamed( + "javax.servlet.http.HttpServletRequest", "org.apache.catalina.loader.Constants"); } @Override