diff --git a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json index e3d6056a5de9..b26833333238 100644 --- a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json +++ b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json @@ -1,4 +1,4 @@ { "comment": "Modify this file in a trivial way to cause this test suite to run", - "modification": 1 + "modification": 2 } diff --git a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json index 455144f02a35..d6a91b7e2e86 100644 --- a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json +++ b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json @@ -1,4 +1,4 @@ { "comment": "Modify this file in a trivial way to cause this test suite to run", - "modification": 6 + "modification": 7 } diff --git a/CHANGES.md b/CHANGES.md index 87fdaa8d0216..42ec737cfd7c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -74,8 +74,8 @@ ## Breaking Changes -* (Python) Removed `google-perftools` from the SDK container images. Users who wish to use `--profiler_agent=tcmalloc` should install google-perftools APT package in their custom container images separately ([#39323](https://github.com/apache/beam/issues/39323)). -* (Java) Added `DRAINING` and `DRAINED` states to `PipelineResult`, including runner state mappings and Dataflow update handling ([#39020](https://github.com/apache/beam/issues/39020)). +* (Java) IcebergIO now requires Java 17 at runtime. This raises the floor in preparation for the Iceberg 1.11.0 upgrade ([#38925](https://github.com/apache/beam/issues/38925)). +* X behavior was changed ([#X](https://github.com/apache/beam/issues/X)). ## Deprecations diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 70a22e397724..850907ea3eb6 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -1256,20 +1256,26 @@ class BeamModulePlugin implements Plugin { maxHeapSize = '2g' } + // NOTE: Use the character class "[.]" instead of an escaped "\\." to match a literal dot in + // these Checker Framework -AskipDefs/-AskipUses regexes. When a module is compiled on an older + // host JDK and forked to a newer JDK via javaXXHome (e.g. iceberg's requireJavaVersion 17 on a + // Java 11 CI host), Gradle passes the javac arguments through an @argfile. Backslash escapes do + // not survive that round-trip intact, so "\\." becomes a literal-backslash regex that matches + // nothing and the suppression is silently dropped. "[.]" is backslash-free and survives. List skipDefRegexes = [] skipDefRegexes << "AutoValue_.*" skipDefRegexes << "AutoBuilder_.*" skipDefRegexes << "AutoOneOf_.*" - skipDefRegexes << ".*\\.jmh_generated\\..*" + skipDefRegexes << ".*[.]jmh_generated[.].*" skipDefRegexes += configuration.generatedClassPatterns skipDefRegexes += configuration.classesTriggerCheckerBugs.keySet() String skipDefCombinedRegex = skipDefRegexes.collect({ regex -> "(${regex})"}).join("|") List skipUsesRegexes = [] // zstd-jni is not annotated, handles Zstd(De)CompressCtx.loadDict(null) just fine - skipUsesRegexes << "^com\\.github\\.luben\\.zstd\\..*" + skipUsesRegexes << "^com[.]github[.]luben[.]zstd[.].*" // SLF4J logger handles null log message parameters - skipUsesRegexes << "^org\\.slf4j\\.Logger.*" + skipUsesRegexes << "^org[.]slf4j[.]Logger.*" String skipUsesCombinedRegex = skipUsesRegexes.collect({ regex -> "(${regex})"}).join("|") project.apply plugin: 'org.checkerframework' diff --git a/examples/java/iceberg/build.gradle b/examples/java/iceberg/build.gradle index 4d4a1fb44413..2cff15c5fb0d 100644 --- a/examples/java/iceberg/build.gradle +++ b/examples/java/iceberg/build.gradle @@ -26,8 +26,8 @@ plugins { applyJavaNature( exportJavadoc: false, automaticModuleName: 'org.apache.beam.examples.iceberg', - // iceberg requires Java11+ - requireJavaVersion: JavaVersion.VERSION_11 + // iceberg requires Java17+ + requireJavaVersion: JavaVersion.VERSION_17 ) description = "Apache Beam :: Examples :: Java :: Iceberg" diff --git a/sdks/java/extensions/sql/iceberg/build.gradle b/sdks/java/extensions/sql/iceberg/build.gradle index 893a485e7d86..97a128d69e9e 100644 --- a/sdks/java/extensions/sql/iceberg/build.gradle +++ b/sdks/java/extensions/sql/iceberg/build.gradle @@ -22,8 +22,8 @@ plugins { id 'org.apache.beam.module' } applyJavaNature( automaticModuleName: 'org.apache.beam.sdk.extensions.sql.meta.provider.hcatalog', - // iceberg requires Java11+ - requireJavaVersion: JavaVersion.VERSION_11, + // iceberg requires Java17+ + requireJavaVersion: JavaVersion.VERSION_17, ) dependencies { diff --git a/sdks/java/io/iceberg/build.gradle b/sdks/java/io/iceberg/build.gradle index 8142c5f5b90b..7cdd32ed90e4 100644 --- a/sdks/java/io/iceberg/build.gradle +++ b/sdks/java/io/iceberg/build.gradle @@ -23,8 +23,8 @@ import java.util.stream.Collectors plugins { id 'org.apache.beam.module' } applyJavaNature( automaticModuleName: 'org.apache.beam.sdk.io.iceberg', - // iceberg ended support for Java 8 in 1.7.0 - requireJavaVersion: JavaVersion.VERSION_11, + // iceberg ended support for Java 11 in 1.11.0 + requireJavaVersion: JavaVersion.VERSION_17, ) description = "Apache Beam :: SDKs :: Java :: IO :: Iceberg"