KAFKA-17811 Separate modules to use different JDKs (#17522)

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
This commit is contained in:
TengYao Chi 2024-11-26 23:30:41 +08:00 committed by GitHub
parent 866d66229d
commit 056a76e2b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 22 additions and 18 deletions

View File

@ -145,7 +145,7 @@ jobs:
strategy:
fail-fast: false
matrix:
java: [ 23, 11 ] # If we change these, make sure to adjust ci-complete.yml
java: [ 23, 17 ] # If we change these, make sure to adjust ci-complete.yml
name: JUnit tests Java ${{ matrix.java }}
steps:
- name: Checkout code

View File

@ -43,7 +43,7 @@ jobs:
strategy:
fail-fast: false
matrix:
java: [ 23, 11 ]
java: [ 23, 17 ]
artifact-prefix: [ "build-scan-test-", "build-scan-quarantined-test-"]
steps:
- name: Env

View File

@ -47,7 +47,11 @@ plugins {
ext {
gradleVersion = versions.gradle
minJavaVersion = 11
minClientJavaVersion = 11
minNonClientJavaVersion = 17
// The connect:api module also belongs to the clients module, but it has already been bumped to JDK 17 as part of KIP-1032.
modulesNeedingJava11 = [":clients", ":streams", ":streams:test-utils", ":streams-scala", ":test-common:test-common-runtime"]
buildVersionFileName = "kafka-version.properties"
defaultMaxHeapSize = "2g"
@ -113,22 +117,24 @@ ext {
commitId = determineCommitId()
configureJavaCompiler = { name, options ->
configureJavaCompiler = { name, options, projectPath ->
// -parameters generates arguments with parameter names in TestInfo#getDisplayName.
// ref: https://github.com/junit-team/junit5/blob/4c0dddad1b96d4a20e92a2cd583954643ac56ac0/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTest.java#L161-L164
if (name == "compileTestJava" || name == "compileTestScala") {
def releaseVersion = modulesNeedingJava11.any { projectPath == it } ? minClientJavaVersion : minNonClientJavaVersion
options.compilerArgs << "-encoding" << "UTF-8"
options.compilerArgs += ["--release", String.valueOf(releaseVersion)]
if (name in ["compileTestJava", "compileTestScala"]) {
options.compilerArgs << "-parameters"
options.compilerArgs += ["--release", String.valueOf(minJavaVersion)]
} else if (name == "compileJava" || name == "compileScala") {
options.compilerArgs << "-Xlint:all"
} else if (name in ["compileJava", "compileScala"]) {
if (!project.path.startsWith(":connect") && !project.path.startsWith(":storage"))
options.compilerArgs << "-Xlint:-rawtypes"
options.compilerArgs << "-encoding" << "UTF-8"
options.compilerArgs << "-Xlint:-rawtypes"
options.compilerArgs << "-Xlint:all"
options.compilerArgs << "-Xlint:-serial"
options.compilerArgs << "-Xlint:-try"
options.compilerArgs << "-Werror"
options.compilerArgs += ["--release", String.valueOf(minJavaVersion)]
}
}
@ -321,7 +327,7 @@ subprojects {
}
tasks.withType(JavaCompile) {
configureJavaCompiler(name, options)
configureJavaCompiler(name, options, project.path)
}
if (shouldPublish) {
@ -730,7 +736,7 @@ subprojects {
}
tasks.withType(ScalaCompile) {
def releaseVersion = modulesNeedingJava11.any { project.path == it } ? minClientJavaVersion : minNonClientJavaVersion
scalaCompileOptions.keepAliveMode = userKeepAliveMode
scalaCompileOptions.additionalParameters = [
@ -774,10 +780,9 @@ subprojects {
scalaCompileOptions.additionalParameters += ["-opt-warnings", "-Xlint:strict-unsealed-patmat"]
// Scala 2.13.2 introduces compiler warnings suppression, which is a pre-requisite for -Xfatal-warnings
scalaCompileOptions.additionalParameters += ["-Xfatal-warnings"]
scalaCompileOptions.additionalParameters += ["--release", String.valueOf(releaseVersion)]
scalaCompileOptions.additionalParameters += ["-release", String.valueOf(minJavaVersion)]
configureJavaCompiler(name, options)
configureJavaCompiler(name, options, project.path)
configure(scalaCompileOptions.forkOptions) {
memoryMaximumSize = defaultMaxHeapSize
@ -2601,7 +2606,6 @@ project(':streams') {
// testCompileOnly prevents streams from exporting a dependency on test-utils, which would cause a dependency cycle
testCompileOnly project(':streams:test-utils')
testImplementation project(':metadata')
testImplementation project(':clients').sourceSets.test.output
testImplementation libs.reload4j
testImplementation libs.junitJupiter
@ -2610,7 +2614,6 @@ project(':streams') {
testImplementation libs.mockitoCore
testImplementation libs.mockitoJunitJupiter // supports MockitoExtension
testImplementation libs.junitPlatformSuiteEngine // supports suite test
testImplementation project(':group-coordinator')
testRuntimeOnly project(':streams:test-utils')
testRuntimeOnly runtimeTestLibs

View File

@ -456,6 +456,7 @@ public class SynchronizationTest {
}
}
@SuppressWarnings("removal")
private static ThreadFactory threadFactoryWithNamedThreads(String threadPrefix) {
AtomicInteger threadNumber = new AtomicInteger(1);
return r -> {