Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/IO_Iceberg_Integration_Tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ jobs:
github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
- name: Setup environment
uses: ./.github/actions/setup-environment-action
with:
java-version: 17
- name: Run IcebergIO Integration Test
uses: ./.github/actions/gradle-command-self-hosted-action
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/IO_Iceberg_Integration_Tests_Dataflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ jobs:
github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
- name: Setup environment
uses: ./.github/actions/setup-environment-action
with:
java-version: 17
- name: Run IcebergIO Integration Tests on Dataflow
uses: ./.github/actions/gradle-command-self-hosted-action
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ jobs:
github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
- name: Setup environment
uses: ./.github/actions/setup-environment-action
with:
java-version: 17
- name: Run IcebergIO Managed Integration Tests on Dataflow
uses: ./.github/actions/gradle-command-self-hosted-action
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/IO_Iceberg_Performance_Tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ jobs:
github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
- name: Setup environment
uses: ./.github/actions/setup-environment-action
with:
java-version: 17
- name: Run IcebergIO Performance Test
uses: ./.github/actions/gradle-command-self-hosted-action
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/IO_Iceberg_Unit_Tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ jobs:
github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
- name: Setup environment
uses: ./.github/actions/setup-environment-action
with:
java-version: 17
- name: run IcebergIO build script
uses: ./.github/actions/gradle-command-self-hosted-action
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,5 @@ jobs:
with:
gradle-command: :sdks:python:test-suites:direct:crossLanguageWrapperValidationPreCommit --info
arguments: |
-PtestJavaVersion=17
-Pjava17Home=$JAVA_HOME_17_X64
3 changes: 2 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@
* Python SDK now supports memory profiling with Memray ([#38853](https://github.com/apache/beam/issues/38853)).
* (Python) Added [Qdrant](https://qdrant.tech/) VectorDatabaseWriteConfig implementation ([#38141](https://github.com/apache/beam/issues/38141)).


## I/Os

* Support for reading from Delta Lake added (Java) ([#38551](https://github.com/apache/beam/issues/38551)).
Expand All @@ -82,6 +81,8 @@
* (Python) Typehints of dataclass fields are honored during type inferences. To restore the behavior of fallback-to-any,
use pipeline option `--exclude_infer_dataclass_field_type` ([#38797](https://github.com/apache/beam/issues/38797)).
However fixing forward is recommended.
* (Java) IcebergIO now requires Java 17 at runtime. This raises the floor in preparation for the Iceberg 1.11.0 upgrade, which is published as Java 17 bytecode. Pipelines using `Managed.read(ICEBERG)`/`Managed.write(ICEBERG)` must run on a Java 17+ JVM ([#38925](https://github.com/apache/beam/issues/38925)).
* (Java) Beam SQL's IcebergIO extension now requires Java 17, as it depends on the IcebergIO module ([#38925](https://github.com/apache/beam/issues/38925)).

## Deprecations

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1224,20 +1224,26 @@ class BeamModulePlugin implements Plugin<Project> {
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<String> 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<String> 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'
Expand Down Expand Up @@ -2715,6 +2721,11 @@ class BeamModulePlugin implements Plugin<Project> {
def usesDataflowRunner = config.pythonPipelineOptions.contains("--runner=TestDataflowRunner") || config.pythonPipelineOptions.contains("--runner=DataflowRunner")
String ver = project.findProperty('testJavaVersion')
def javaContainerSuffix = ver ? getSupportedJavaVersion(ver) : getSupportedJavaVersion()
// When a specific test JDK is requested (-PtestJavaVersion), launch the Python-started
// expansion service on it as well (see the exec block below). Some bundled IOs (e.g.
// IcebergIO) are compiled for Java 17, so the expansion service must run on a JDK that can
// load them. Mirrors the JAVA_HOME handling in the other cross-language task factories.
String testJavaHome = ver ? project.findProperty("java${ver}Home") : null

// Sets up, collects, and runs Python pipeline tests
project.tasks.register(config.name+"PythonUsingJava") {
Expand Down Expand Up @@ -2744,6 +2755,9 @@ class BeamModulePlugin implements Plugin<Project> {
project.exec {
// environment variable to indicate that jars have been built
environment "EXPANSION_JARS", config.expansionProjectPaths
if (testJavaHome) {
environment "JAVA_HOME", testJavaHome
}
String additionalDependencyCmd = ""
if (config.additionalDeps != null && !config.additionalDeps.isEmpty()){
additionalDependencyCmd = "&& pip install ${config.additionalDeps.join(' ')} "
Expand Down
4 changes: 2 additions & 2 deletions examples/java/iceberg/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions sdks/java/extensions/sql/iceberg/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions sdks/java/io/iceberg/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading