From a0cefedbb4a52f6e02d4654c0bc5ebf49f904a51 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Mon, 25 Jan 2021 11:28:12 -0500 Subject: [PATCH 1/3] configuration.testRuntime for Hadoop modules --- .../groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 2 +- sdks/java/io/cassandra/build.gradle | 6 ++++++ sdks/java/io/hadoop-file-system/build.gradle | 6 ++++++ sdks/java/io/hadoop-format/build.gradle | 6 ++++++ 4 files changed, 19 insertions(+), 1 deletion(-) 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 68b56393aa6c..f139bd0833a1 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -436,7 +436,7 @@ class BeamModulePlugin implements Plugin { def google_oauth_clients_version = "1.31.0" // Try to keep grpc_version consistent with gRPC version in google_cloud_platform_libraries_bom def grpc_version = "1.32.2" - def guava_version = "25.1-jre" + def guava_version = "30.1-jre" def hadoop_version = "2.10.1" def hamcrest_version = "2.1" def influxdb_version = "2.19" diff --git a/sdks/java/io/cassandra/build.gradle b/sdks/java/io/cassandra/build.gradle index 771386a77bfa..b4a4503c87ec 100644 --- a/sdks/java/io/cassandra/build.gradle +++ b/sdks/java/io/cassandra/build.gradle @@ -51,3 +51,9 @@ dependencies { testRuntimeOnly library.java.slf4j_jdk14 testRuntimeOnly project(path: ":runners:direct-java", configuration: "shadow") } + +configurations.testRuntime { + resolutionStrategy { + force 'com.google.guava:guava:25.1-jre' + } +} diff --git a/sdks/java/io/hadoop-file-system/build.gradle b/sdks/java/io/hadoop-file-system/build.gradle index c4c3c93756b5..567f5be83e9b 100644 --- a/sdks/java/io/hadoop-file-system/build.gradle +++ b/sdks/java/io/hadoop-file-system/build.gradle @@ -74,6 +74,12 @@ hadoopVersions.each {kv -> } } +configurations.testRuntime { + resolutionStrategy { + force 'com.google.guava:guava:25.1-jre' + } +} + task hadoopVersionsTest(group: "Verification") { description = "Runs Hadoop file system tests with different Hadoop versions" def taskNames = hadoopVersions.keySet().stream() diff --git a/sdks/java/io/hadoop-format/build.gradle b/sdks/java/io/hadoop-format/build.gradle index 5ab4a55013a3..500836e20fad 100644 --- a/sdks/java/io/hadoop-format/build.gradle +++ b/sdks/java/io/hadoop-format/build.gradle @@ -128,6 +128,12 @@ hadoopVersions.each {kv -> } } +configurations.testRuntime { + resolutionStrategy { + force 'com.google.guava:guava:25.1-jre' + } +} + // The cassandra.yaml file currently assumes "target/..." exists. // TODO: Update cassandra.yaml to inject new properties representing // the root path. Also migrate cassandra.yaml to use any open ports From 15d7a3d9609ecc615a26fa133cfeaaf50028e6f4 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Mon, 25 Jan 2021 12:41:40 -0500 Subject: [PATCH 2/3] 'all' configuration --- sdks/java/io/cassandra/build.gradle | 3 ++- sdks/java/io/hadoop-file-system/build.gradle | 3 ++- sdks/java/io/hadoop-format/build.gradle | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sdks/java/io/cassandra/build.gradle b/sdks/java/io/cassandra/build.gradle index b4a4503c87ec..fa6159f18c19 100644 --- a/sdks/java/io/cassandra/build.gradle +++ b/sdks/java/io/cassandra/build.gradle @@ -52,7 +52,8 @@ dependencies { testRuntimeOnly project(path: ":runners:direct-java", configuration: "shadow") } -configurations.testRuntime { +// Cassandra dependencies require old version of Guava (BEAM-11626) +configurations.all { resolutionStrategy { force 'com.google.guava:guava:25.1-jre' } diff --git a/sdks/java/io/hadoop-file-system/build.gradle b/sdks/java/io/hadoop-file-system/build.gradle index 567f5be83e9b..3d30ac6f20a5 100644 --- a/sdks/java/io/hadoop-file-system/build.gradle +++ b/sdks/java/io/hadoop-file-system/build.gradle @@ -74,7 +74,8 @@ hadoopVersions.each {kv -> } } -configurations.testRuntime { +// Hadoop dependencies require old version of Guava (BEAM-11626) +configurations.all { resolutionStrategy { force 'com.google.guava:guava:25.1-jre' } diff --git a/sdks/java/io/hadoop-format/build.gradle b/sdks/java/io/hadoop-format/build.gradle index 500836e20fad..02094ada73d6 100644 --- a/sdks/java/io/hadoop-format/build.gradle +++ b/sdks/java/io/hadoop-format/build.gradle @@ -128,7 +128,8 @@ hadoopVersions.each {kv -> } } -configurations.testRuntime { +// Hadoop dependencies require old version of Guava (BEAM-11626) +configurations.all { resolutionStrategy { force 'com.google.guava:guava:25.1-jre' } From c85793e0d869cb02c2a350b7e1ef7ee00ae988d9 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Mon, 25 Jan 2021 17:33:42 -0500 Subject: [PATCH 3/3] Note in CHANGES.md --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index bb2a3626facf..0a4dc68afb41 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -67,6 +67,11 @@ ## Breaking Changes +* The Java artifacts "beam-sdks-java-io-kinesis", "beam-sdks-java-io-google-cloud-platform", and + "beam-sdks-java-extensions-sql-zetasql" declare Guava 30.1-jre dependency (It was 25.1-jre in Beam 2.27.0). + This new Guava version may introduce dependency conflicts if your project or dependencies rely + on removed APIs. If affected, ensure to use an appropriate Guava version via `dependencyManagement` in Maven and + `force` in Gradle. * X behavior was changed ([BEAM-X](https://issues.apache.org/jira/browse/BEAM-X)). ## Deprecations