Skip to content

Commit 41ef2a8

Browse files
committed
account for minimum java versions
1 parent 21b7587 commit 41ef2a8

File tree

9 files changed

+216
-43
lines changed

9 files changed

+216
-43
lines changed

docs/instrumentation-list.yaml

+24-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ activej:
66
instrumentations:
77
- name: activej-http-6.0
88
srcPath: instrumentation/activej-http-6.0
9+
minimumJavaVersion: 17
910
scope:
1011
name: io.opentelemetry.activej-http-6.0
1112
target_versions:
@@ -470,6 +471,7 @@ graphql:
470471
- com.graphql-java:graphql-java:[12.0,19.+)
471472
- name: graphql-java-20.0
472473
srcPath: instrumentation/graphql-java/graphql-java-20.0
474+
minimumJavaVersion: 11
473475
scope:
474476
name: io.opentelemetry.graphql-java-20.0
475477
target_versions:
@@ -543,6 +545,7 @@ hibernate:
543545
- org.hibernate:hibernate-core:[3.3.0.GA,4.0.0.Final)
544546
- name: hibernate-6.0
545547
srcPath: instrumentation/hibernate/hibernate-6.0
548+
minimumJavaVersion: 11
546549
scope:
547550
name: io.opentelemetry.hibernate-6.0
548551
target_versions:
@@ -656,16 +659,18 @@ java:
656659
library: []
657660
- name: java-http-client
658661
srcPath: instrumentation/java-http-client
662+
minimumJavaVersion: 11
659663
scope:
660664
name: io.opentelemetry.java-http-client
661665
target_versions:
662666
javaagent:
663-
- Java 8+
667+
- Java 11+
664668
library: []
665669
javalin:
666670
instrumentations:
667671
- name: javalin-5.0
668672
srcPath: instrumentation/javalin-5.0
673+
minimumJavaVersion: 11
669674
scope:
670675
name: io.opentelemetry.javalin-5.0
671676
target_versions:
@@ -698,6 +703,7 @@ jaxrs:
698703
- org.glassfish.jersey.containers:jersey-container-servlet:[2.0,3.0.0)
699704
- name: jaxrs-3.0-jersey-3.0
700705
srcPath: instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0
706+
minimumJavaVersion: 11
701707
scope:
702708
name: io.opentelemetry.jaxrs-3.0-jersey-3.0
703709
target_versions:
@@ -733,6 +739,7 @@ jaxrs:
733739
target_versions: {}
734740
- name: jaxrs-3.0-resteasy-6.0
735741
srcPath: instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0
742+
minimumJavaVersion: 11
736743
scope:
737744
name: io.opentelemetry.jaxrs-3.0-resteasy-6.0
738745
target_versions:
@@ -845,6 +852,7 @@ jetty:
845852
instrumentations:
846853
- name: jetty-httpclient-12.0
847854
srcPath: instrumentation/jetty-httpclient/jetty-httpclient-12.0
855+
minimumJavaVersion: 17
848856
scope:
849857
name: io.opentelemetry.jetty-httpclient-12.0
850858
target_versions:
@@ -854,6 +862,7 @@ jetty:
854862
- org.eclipse.jetty:jetty-client:12.0.0
855863
- name: jetty-12.0
856864
srcPath: instrumentation/jetty/jetty-12.0
865+
minimumJavaVersion: 17
857866
scope:
858867
name: io.opentelemetry.jetty-12.0
859868
target_versions:
@@ -877,6 +886,7 @@ jetty:
877886
- org.eclipse.jetty:jetty-client:[9.2.0.v20140526,9.+)
878887
- name: jetty-11.0
879888
srcPath: instrumentation/jetty/jetty-11.0
889+
minimumJavaVersion: 11
880890
scope:
881891
name: io.opentelemetry.jetty-11.0
882892
target_versions:
@@ -886,6 +896,7 @@ jms:
886896
instrumentations:
887897
- name: jms-3.0
888898
srcPath: instrumentation/jms/jms-3.0
899+
minimumJavaVersion: 11
889900
scope:
890901
name: io.opentelemetry.jms-3.0
891902
target_versions:
@@ -922,13 +933,15 @@ jsf:
922933
instrumentations:
923934
- name: jsf-myfaces-3.0
924935
srcPath: instrumentation/jsf/jsf-myfaces-3.0
936+
minimumJavaVersion: 11
925937
scope:
926938
name: io.opentelemetry.jsf-myfaces-3.0
927939
target_versions:
928940
javaagent:
929941
- org.apache.myfaces.core:myfaces-impl:[3,)
930942
- name: jsf-mojarra-3.0
931943
srcPath: instrumentation/jsf/jsf-mojarra-3.0
944+
minimumJavaVersion: 11
932945
scope:
933946
name: io.opentelemetry.jsf-mojarra-3.0
934947
target_versions:
@@ -1263,6 +1276,7 @@ opensearch:
12631276
instrumentations:
12641277
- name: opensearch-rest-1.0
12651278
srcPath: instrumentation/opensearch/opensearch-rest-1.0
1279+
minimumJavaVersion: 11
12661280
scope:
12671281
name: io.opentelemetry.opensearch-rest-1.0
12681282
target_versions:
@@ -1684,6 +1698,7 @@ runtime:
16841698
instrumentations:
16851699
- name: runtime-telemetry-java17
16861700
srcPath: instrumentation/runtime-telemetry/runtime-telemetry-java17
1701+
minimumJavaVersion: 17
16871702
scope:
16881703
name: io.opentelemetry.runtime-telemetry-java17
16891704
target_versions:
@@ -1804,6 +1819,7 @@ spring:
18041819
- org.springframework.batch:spring-batch-core:[3.0.0.RELEASE,5)
18051820
- name: spring-cloud-aws-3.0
18061821
srcPath: instrumentation/spring/spring-cloud-aws-3.0
1822+
minimumJavaVersion: 17
18071823
scope:
18081824
name: io.opentelemetry.spring-cloud-aws-3.0
18091825
target_versions:
@@ -1827,6 +1843,7 @@ spring:
18271843
- org.springframework:spring-webflux:5.3.0
18281844
- name: spring-jms-6.0
18291845
srcPath: instrumentation/spring/spring-jms/spring-jms-6.0
1846+
minimumJavaVersion: 17
18301847
scope:
18311848
name: io.opentelemetry.spring-jms-6.0
18321849
target_versions:
@@ -1855,6 +1872,7 @@ spring:
18551872
- org.springframework:spring-webmvc:[3.1.0.RELEASE,6)
18561873
- name: spring-webmvc-6.0
18571874
srcPath: instrumentation/spring/spring-webmvc/spring-webmvc-6.0
1875+
minimumJavaVersion: 17
18581876
scope:
18591877
name: io.opentelemetry.spring-webmvc-6.0
18601878
target_versions:
@@ -1871,6 +1889,7 @@ spring:
18711889
- org.springframework.data:spring-data-commons:[1.8.0.RELEASE,]
18721890
- name: spring-pulsar-1.0
18731891
srcPath: instrumentation/spring/spring-pulsar-1.0
1892+
minimumJavaVersion: 17
18741893
scope:
18751894
name: io.opentelemetry.spring-pulsar-1.0
18761895
target_versions:
@@ -1900,6 +1919,7 @@ spring:
19001919
library: []
19011920
- name: spring-core-2.0
19021921
srcPath: instrumentation/spring/spring-core-2.0
1922+
minimumJavaVersion: 17
19031923
scope:
19041924
name: io.opentelemetry.spring-core-2.0
19051925
target_versions:
@@ -1914,6 +1934,7 @@ spring:
19141934
- org.springframework.cloud:spring-cloud-starter-gateway:[2.0.0.RELEASE,]
19151935
- name: spring-security-config-6.0
19161936
srcPath: instrumentation/spring/spring-security-config-6.0
1937+
minimumJavaVersion: 17
19171938
scope:
19181939
name: io.opentelemetry.spring-security-config-6.0
19191940
target_versions:
@@ -1975,6 +1996,7 @@ struts:
19751996
- org.apache.struts:struts2-core:[2.1.0,7)
19761997
- name: struts-7.0
19771998
srcPath: instrumentation/struts/struts-7.0
1999+
minimumJavaVersion: 17
19782000
scope:
19792001
name: io.opentelemetry.struts-7.0
19802002
target_versions:
@@ -1993,6 +2015,7 @@ tomcat:
19932015
instrumentations:
19942016
- name: tomcat-10.0
19952017
srcPath: instrumentation/tomcat/tomcat-10.0
2018+
minimumJavaVersion: 11
19962019
scope:
19972020
name: io.opentelemetry.tomcat-10.0
19982021
target_versions:

instrumentation-docs/readme.md

+7-3
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public class SpringWebInstrumentationModule extends InstrumentationModule
5252
* Configured in `InstrumentationModule` code for each module
5353
* srcPath
5454
* Path to the source code of the instrumentation module
55+
* minimumJavaVersion
56+
* Minimum Java version required by the instrumentation module. If not specified, it is assumed to
57+
be Java 8
5558
* description
5659
* Short description of what the instrumentation does
5760
* target_versions
@@ -72,18 +75,19 @@ As of now, the following fields are supported:
7275
description: "Description of what the instrumentation does."
7376
```
7477

75-
### Versions targeted
78+
### Gradle File Derived Information
7679

77-
We parse gradle files in order to determine the target versions.
80+
We parse gradle files in order to determine several pieces of metadata:
7881

7982
- Javaagent versions are determined by the `muzzle` plugin configurations
8083
- Library versions are determined by the library dependency versions
8184
- when available, latestDepTestLibrary is used to determine the latest supported version
85+
- Minimum Java version is determined by the `otelJava` configurations
8286

8387
### Scope
8488

8589
For now, the scope name is the only value that is implemented in our instrumentations. The scope
8690
name is determined by the instrumentation module name: `io.opentelemetry.{instrumentation name}`
8791

88-
We will implement gatherers for the schemaUrl and attributes when instrumentations start
92+
We will implement gatherers for the schemaUrl and scope attributes when instrumentations start
8993
implementing them.

instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/InstrumentationAnalyzer.java

+11-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.instrumentation.docs.parsers.GradleParser.parseGradleFile;
99

10+
import io.opentelemetry.instrumentation.docs.internal.DependencyInfo;
1011
import io.opentelemetry.instrumentation.docs.internal.InstrumentationEntity;
1112
import io.opentelemetry.instrumentation.docs.internal.InstrumentationType;
1213
import io.opentelemetry.instrumentation.docs.utils.FileManager;
@@ -83,15 +84,21 @@ void analyzeVersions(List<String> files, InstrumentationEntity entity) {
8384
Map<InstrumentationType, Set<String>> versions = new HashMap<>();
8485
for (String file : files) {
8586
String fileContents = fileSearch.readFileToString(file);
87+
DependencyInfo results = null;
8688

8789
if (file.contains("/javaagent/")) {
88-
Set<String> results = parseGradleFile(fileContents, InstrumentationType.JAVAAGENT);
90+
results = parseGradleFile(fileContents, InstrumentationType.JAVAAGENT);
8991
versions
9092
.computeIfAbsent(InstrumentationType.JAVAAGENT, k -> new HashSet<>())
91-
.addAll(results);
93+
.addAll(results.versions());
9294
} else if (file.contains("/library/")) {
93-
Set<String> results = parseGradleFile(fileContents, InstrumentationType.LIBRARY);
94-
versions.computeIfAbsent(InstrumentationType.LIBRARY, k -> new HashSet<>()).addAll(results);
95+
results = parseGradleFile(fileContents, InstrumentationType.LIBRARY);
96+
versions
97+
.computeIfAbsent(InstrumentationType.LIBRARY, k -> new HashSet<>())
98+
.addAll(results.versions());
99+
}
100+
if (results != null && results.minJavaVersionSupported() != null) {
101+
entity.setMinJavaVersion(results.minJavaVersionSupported());
95102
}
96103
}
97104
entity.setTargetVersions(versions);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.docs.internal;
7+
8+
import java.util.Set;
9+
10+
/**
11+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
12+
* any time.
13+
*/
14+
public record DependencyInfo(Set<String> versions, Integer minJavaVersionSupported) {}

instrumentation-docs/src/main/java/io/opentelemetry/instrumentation/docs/internal/InstrumentationEntity.java

+25-9
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,7 @@ public class InstrumentationEntity {
2121
private final String group;
2222
private final InstrumentationScopeInfo scopeInfo;
2323
private Map<InstrumentationType, Set<String>> targetVersions;
24-
25-
public void setTargetVersions(Map<InstrumentationType, Set<String>> targetVersions) {
26-
this.targetVersions = targetVersions;
27-
}
28-
29-
public void setMetadata(InstrumentationMetaData metadata) {
30-
this.metadata = metadata;
31-
}
32-
24+
private Integer minJavaVersion;
3325
private InstrumentationMetaData metadata;
3426

3527
/**
@@ -43,6 +35,7 @@ public InstrumentationEntity(Builder builder) {
4335
this.group = builder.group;
4436
this.metadata = builder.metadata;
4537
this.targetVersions = builder.targetVersions;
38+
this.minJavaVersion = builder.minJavaVersion;
4639
this.scopeInfo = InstrumentationScopeInfo.create("io.opentelemetry." + instrumentationName);
4740
}
4841

@@ -74,6 +67,22 @@ public InstrumentationScopeInfo getScopeInfo() {
7467
return scopeInfo;
7568
}
7669

70+
public void setTargetVersions(Map<InstrumentationType, Set<String>> targetVersions) {
71+
this.targetVersions = targetVersions;
72+
}
73+
74+
public void setMetadata(InstrumentationMetaData metadata) {
75+
this.metadata = metadata;
76+
}
77+
78+
public Integer getMinJavaVersion() {
79+
return minJavaVersion;
80+
}
81+
82+
public void setMinJavaVersion(Integer minJavaVersion) {
83+
this.minJavaVersion = minJavaVersion;
84+
}
85+
7786
/**
7887
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
7988
* any time.
@@ -83,6 +92,7 @@ public static class Builder {
8392
private String instrumentationName;
8493
private String namespace;
8594
private String group;
95+
private Integer minJavaVersion;
8696
private InstrumentationMetaData metadata;
8797
private Map<InstrumentationType, Set<String>> targetVersions;
8898

@@ -104,6 +114,12 @@ public Builder namespace(String namespace) {
104114
return this;
105115
}
106116

117+
@CanIgnoreReturnValue
118+
public Builder minJavaVersion(Integer minJavaVersion) {
119+
this.minJavaVersion = minJavaVersion;
120+
return this;
121+
}
122+
107123
@CanIgnoreReturnValue
108124
public Builder group(String group) {
109125
this.group = group;

0 commit comments

Comments
 (0)