Skip to content

Commit dfc79eb

Browse files
authored
Build with jdk21 (#11219)
1 parent c92955f commit dfc79eb

File tree

30 files changed

+131
-62
lines changed

30 files changed

+131
-62
lines changed

.github/workflows/auto-update-otel-sdk.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
7070
with:
7171
distribution: temurin
72-
java-version: 17.0.6
72+
java-version: 21
7373

7474
- name: Setup Gradle
7575
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/build-common.yml

+7-7
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
3636
with:
3737
distribution: temurin
38-
java-version: 17.0.6
38+
java-version: 21
3939

4040
- name: Setup Gradle
4141
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
@@ -68,7 +68,7 @@ jobs:
6868
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
6969
with:
7070
distribution: temurin
71-
java-version: 17.0.6
71+
java-version: 21
7272

7373
- name: Setup Gradle
7474
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
@@ -138,7 +138,7 @@ jobs:
138138
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
139139
with:
140140
distribution: temurin
141-
java-version: 17.0.6
141+
java-version: 21
142142

143143
- name: Increase gradle daemon heap size
144144
run: |
@@ -220,7 +220,7 @@ jobs:
220220
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
221221
with:
222222
distribution: temurin
223-
java-version: 17.0.6
223+
java-version: 21
224224

225225
# vaadin 14 tests fail with node 18
226226
- name: Set up Node
@@ -335,7 +335,7 @@ jobs:
335335
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
336336
with:
337337
distribution: temurin
338-
java-version: 17.0.6
338+
java-version: 21
339339

340340
- name: Set up Gradle cache
341341
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
@@ -388,7 +388,7 @@ jobs:
388388
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
389389
with:
390390
distribution: temurin
391-
java-version: 17.0.6
391+
java-version: 21
392392

393393
- name: Setup Gradle
394394
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
@@ -411,7 +411,7 @@ jobs:
411411
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
412412
with:
413413
distribution: temurin
414-
java-version: 17.0.6
414+
java-version: 21
415415

416416
- name: Set up Gradle cache
417417
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
7171
with:
7272
distribution: temurin
73-
java-version: 17.0.6
73+
java-version: 21
7474

7575
- name: Setup Gradle
7676
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/codeql-daily.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
2828
with:
2929
distribution: temurin
30-
java-version: 17.0.6
30+
java-version: 21
3131

3232
- name: Initialize CodeQL
3333
uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3

.github/workflows/owasp-dependency-check-daily.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
2323
with:
2424
distribution: temurin
25-
java-version: 17.0.6
25+
java-version: 21
2626

2727
- name: Increase gradle daemon heap size
2828
run: |

.github/workflows/pr-smoke-test-fake-backend-images.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
2323
with:
2424
distribution: temurin
25-
java-version: 17.0.6
25+
java-version: 21
2626

2727
- name: Setup Gradle
2828
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
@@ -49,7 +49,7 @@ jobs:
4949
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
5050
with:
5151
distribution: temurin
52-
java-version: 17.0.6
52+
java-version: 21
5353

5454
- name: Setup Gradle
5555
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/pr-smoke-test-servlet-images.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
uses: actions/setup-java@v4
4141
with:
4242
distribution: temurin
43-
java-version: 17.0.6
43+
java-version: 21
4444

4545
- name: Set up Gradle cache
4646
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/publish-smoke-test-fake-backend-images.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
uses: actions/setup-java@v4
2323
with:
2424
distribution: temurin
25-
java-version: 17.0.6
25+
java-version: 21
2626

2727
- name: Login to GitHub package registry
2828
uses: docker/login-action@v3
@@ -55,7 +55,7 @@ jobs:
5555
uses: actions/setup-java@v4
5656
with:
5757
distribution: temurin
58-
java-version: 17.0.6
58+
java-version: 21
5959

6060
- name: Login to GitHub package registry
6161
uses: azure/docker-login@v1

.github/workflows/publish-smoke-test-servlet-images.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
5858
with:
5959
distribution: temurin
60-
java-version: 17.0.6
60+
java-version: 21
6161

6262
- name: Login to GitHub package registry
6363
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ jobs:
8383
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
8484
with:
8585
distribution: temurin
86-
java-version: 17.0.6
86+
java-version: 21
8787

8888
- name: Setup Gradle
8989
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/reusable-muzzle.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
3232
with:
3333
distribution: temurin
34-
java-version: 17.0.6
34+
java-version: 21
3535

3636
- name: Setup Gradle
3737
uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2

.github/workflows/reusable-smoke-test-images.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
4848
with:
4949
distribution: temurin
50-
java-version: 17.0.6
50+
java-version: 21
5151

5252
- name: Login to GitHub package registry
5353
if: inputs.publish

.github/workflows/reusable-test-indy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
4040
with:
4141
distribution: temurin
42-
java-version: 17.0.6
42+
java-version: 21
4343

4444
- name: Increase gradle daemon heap size
4545
run: |

.github/workflows/reusable-test-latest-deps.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
3939
with:
4040
distribution: temurin
41-
java-version: 17.0.6
41+
java-version: 21
4242

4343
- name: Increase gradle daemon heap size
4444
run: |

CONTRIBUTING.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ and discuss your ideas or propose the changes you wish to make.
88

99
## Building
1010

11-
This project requires Java 17 to build and run tests. Newer JDK's may work, but this version is used in CI.
11+
This project requires Java 21 to build and run tests. Newer JDK's may work, but this version is used in CI.
1212

1313
Some instrumentations and tests may put constraints on which java versions they support.
1414
See [Running the tests](./docs/contributing/running-tests.md) for more details.
@@ -22,7 +22,7 @@ the Sonatype OSS snapshots repository at `https://oss.sonatype.org/content/repos
2222

2323
### Building from source
2424

25-
Build using Java 17:
25+
Build using Java 21:
2626

2727
```bash
2828
java -version

conventions/src/main/kotlin/io/opentelemetry/instrumentation/gradle/OtelJavaExtension.kt

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import org.gradle.api.provider.Property
1010

1111
abstract class OtelJavaExtension {
1212
abstract val minJavaVersionSupported: Property<JavaVersion>
13+
abstract val maxJavaVersionSupported: Property<JavaVersion>
1314

1415
abstract val maxJavaVersionForTests: Property<JavaVersion>
1516

conventions/src/main/kotlin/otel.java-conventions.gradle.kts

+17-2
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,15 @@ afterEvaluate {
2727
}
2828

2929
// Version to use to compile code and run tests.
30-
val DEFAULT_JAVA_VERSION = JavaVersion.VERSION_17
30+
val DEFAULT_JAVA_VERSION = JavaVersion.VERSION_21
3131

3232
java {
3333
toolchain {
3434
languageVersion.set(
35-
otelJava.minJavaVersionSupported.map { JavaLanguageVersion.of(Math.max(it.majorVersion.toInt(), DEFAULT_JAVA_VERSION.majorVersion.toInt())) }
35+
otelJava.minJavaVersionSupported.map {
36+
val defaultJavaVersion = otelJava.maxJavaVersionSupported.getOrElse(DEFAULT_JAVA_VERSION).majorVersion.toInt()
37+
JavaLanguageVersion.of(Math.max(it.majorVersion.toInt(), defaultJavaVersion))
38+
}
3639
)
3740
}
3841

@@ -69,18 +72,30 @@ tasks.withType<JavaCompile>().configureEach {
6972
"-Xlint:-processing",
7073
// We suppress the "options" warning because it prevents compilation on modern JDKs
7174
"-Xlint:-options",
75+
// jdk21 generates more serial warnings than previous versions
76+
"-Xlint:-serial",
7277

7378
// Fail build on any warning
7479
"-Werror"
7580
)
7681
)
82+
val defaultJavaVersion = otelJava.maxJavaVersionSupported.getOrElse(DEFAULT_JAVA_VERSION).majorVersion.toInt()
83+
if (Math.max(otelJava.minJavaVersionSupported.get().majorVersion.toInt(), defaultJavaVersion) >= 21) {
84+
// new warning in jdk21
85+
compilerArgs.add("-Xlint:-this-escape")
86+
}
7787
}
7888

7989
encoding = "UTF-8"
8090

8191
if (name.contains("Test")) {
8292
// serialVersionUID is basically guaranteed to be useless in tests
8393
compilerArgs.add("-Xlint:-serial")
94+
// when code is compiled with jdk 21 and executed with jdk 8, the -parameters flag is needed to avoid
95+
// java.lang.reflect.MalformedParametersException: Invalid parameter name ""
96+
// when junit calls java.lang.reflect.Executable.getParameters() on the constructor of a
97+
// non-static nested test class
98+
compilerArgs.add("-parameters")
8499
}
85100
}
86101
}

custom-checks/build.gradle.kts

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ tasks {
3636
"--add-exports",
3737
"jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
3838
"--add-exports",
39+
"jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
40+
"--add-exports",
3941
"jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED",
4042
"--add-exports",
4143
"jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",

instrumentation/apache-httpclient/apache-httpclient-4.3/testing/build.gradle.kts

+10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@ plugins {
22
id("otel.java-conventions")
33
}
44

5+
tasks {
6+
compileJava {
7+
// when code is compiled with jdk 21 and executed with jdk 8 -parameters flag is needed to avoid
8+
// java.lang.reflect.MalformedParametersException: Invalid parameter name ""
9+
// when junit calls java.lang.reflect.Executable.getParameters() on the constructor of a
10+
// non-static nested test class
11+
options.compilerArgs.add("-parameters")
12+
}
13+
}
14+
515
dependencies {
616
api(project(":testing-common"))
717

instrumentation/camel-2.20/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/SanitizationTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ void sanitizeCql(String original, String expected) {
3131
when(exchange.getIn()).thenReturn(message);
3232

3333
String actualSanitized = decorator.getStatement(exchange, null);
34-
assertEquals(actualSanitized, expected);
34+
assertEquals(expected, actualSanitized);
3535
}
3636

3737
@ParameterizedTest
@@ -45,7 +45,7 @@ void sanitizeJdbc(String original, String expected) {
4545
when(exchange.getIn()).thenReturn(message);
4646

4747
String actualSanitized = decorator.getStatement(exchange, null);
48-
assertEquals(actualSanitized, expected);
48+
assertEquals(expected, actualSanitized);
4949
}
5050

5151
@ParameterizedTest
@@ -60,7 +60,7 @@ void sanitizeSql(String original, String expected) {
6060
when(exchange.getIn()).thenReturn(message);
6161

6262
String actualSanitized = decorator.getStatement(exchange, null);
63-
assertEquals(actualSanitized, expected);
63+
assertEquals(expected, actualSanitized);
6464
}
6565

6666
static class SqlArgs implements ArgumentsProvider {

instrumentation/elasticsearch/elasticsearch-transport-5.3/javaagent/build.gradle.kts

+7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ muzzle {
2828
}
2929
}
3030

31+
if (findProperty("testLatestDeps") as Boolean) {
32+
// when running on jdk 21 Elasticsearch53SpringRepositoryTest occasionally fails with timeout
33+
otelJava {
34+
maxJavaVersionSupported.set(JavaVersion.VERSION_17)
35+
}
36+
}
37+
3138
dependencies {
3239
compileOnly("org.elasticsearch.client:transport:5.3.0") {
3340
isTransitive = false

instrumentation/executors/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/executors/ExecutorInstrumentationTest.java

-22
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
99
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
10-
import java.lang.reflect.InvocationTargetException;
11-
import java.lang.reflect.Method;
1210
import java.util.Collection;
1311
import java.util.Collections;
1412
import java.util.List;
@@ -26,8 +24,6 @@
2624
import java.util.concurrent.ThreadPoolExecutor;
2725
import java.util.concurrent.TimeUnit;
2826
import org.junit.jupiter.api.Test;
29-
import org.junit.jupiter.api.condition.EnabledForJreRange;
30-
import org.junit.jupiter.api.condition.JRE;
3127
import org.junit.jupiter.api.extension.RegisterExtension;
3228

3329
abstract class ExecutorInstrumentationTest<T extends ExecutorService>
@@ -51,24 +47,6 @@ static class ThreadPoolExecutorTest extends ExecutorInstrumentationTest<ThreadPo
5147
}
5248
}
5349

54-
@EnabledForJreRange(min = JRE.JAVA_21)
55-
static class VirtualThreadExecutorTest extends ExecutorInstrumentationTest<ExecutorService> {
56-
VirtualThreadExecutorTest() {
57-
super(newVirtualThreadPerTaskExecutor());
58-
}
59-
60-
private static ExecutorService newVirtualThreadPerTaskExecutor() {
61-
Method newVirtualThreadPerTaskExecutor;
62-
try {
63-
newVirtualThreadPerTaskExecutor =
64-
Executors.class.getMethod("newVirtualThreadPerTaskExecutor");
65-
return (ExecutorService) newVirtualThreadPerTaskExecutor.invoke(null);
66-
} catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
67-
throw new IllegalStateException("Should not happen on Java 21+", e);
68-
}
69-
}
70-
}
71-
7250
static class WorkStealingPoolTest extends ExecutorInstrumentationTest<ExecutorService> {
7351
public WorkStealingPoolTest() {
7452
super(Executors.newWorkStealingPool(2));

0 commit comments

Comments
 (0)