Skip to content

Commit 4d41ca5

Browse files
authored
Improve tomcat version detection (#11936)
1 parent f8c383c commit 4d41ca5

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

instrumentation/tomcat/tomcat-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v10_0/Tomcat10InstrumentationModule.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ public Tomcat10InstrumentationModule() {
2525
@Override
2626
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
2727
// only matches tomcat 10.0+
28-
return hasClassesNamed("jakarta.servlet.http.HttpServletRequest");
28+
return hasClassesNamed("jakarta.servlet.http.HttpServletRequest")
29+
.and(
30+
// tomcat 10 has at least one of these two classes. Cache$EvictionOrder is present in
31+
// 10.0.0, but is removed before 10.1.0. GenericUser is added before Cache$EvictionOrder
32+
// is removed
33+
hasClassesNamed("org.apache.catalina.users.GenericUser")
34+
.or(hasClassesNamed("org.apache.catalina.webresources.Cache$EvictionOrder")));
2935
}
3036

3137
@Override

instrumentation/tomcat/tomcat-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/v7_0/Tomcat7InstrumentationModule.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public Tomcat7InstrumentationModule() {
2525
@Override
2626
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
2727
// does not match tomcat 10.0+
28-
return hasClassesNamed("javax.servlet.http.HttpServletRequest");
28+
return hasClassesNamed(
29+
"javax.servlet.http.HttpServletRequest", "org.apache.catalina.loader.Constants");
2930
}
3031

3132
@Override

0 commit comments

Comments
 (0)