diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d6e76d50c26..e860073ecdd5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/.github/workflows/ci-complete.yml b/.github/workflows/ci-complete.yml index 25c96ac2d74c..982eb7725e0a 100644 --- a/.github/workflows/ci-complete.yml +++ b/.github/workflows/ci-complete.yml @@ -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 diff --git a/build.gradle b/build.gradle index 4187f61ef8a5..39ae8a267449 100644 --- a/build.gradle +++ b/build.gradle @@ -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 diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/SynchronizationTest.java b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/SynchronizationTest.java index 1f3d42fd3dc1..70b875b21b8c 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/SynchronizationTest.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/SynchronizationTest.java @@ -456,6 +456,7 @@ private static void printStacktrace(ThreadInfo info, StringBuilder sb) { } } + @SuppressWarnings("removal") private static ThreadFactory threadFactoryWithNamedThreads(String threadPrefix) { AtomicInteger threadNumber = new AtomicInteger(1); return r -> {