From 35f5b0597e62563d843c9b3a7876212967b0a63c Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 13 Jan 2021 20:55:46 +0000 Subject: [PATCH 1/5] Latest Guava version --- .../main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 2 +- 1 file changed, 1 insertion(+), 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 bd2c594e8bfd..56fbdc4e9eec 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -435,7 +435,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" From 851f8ced48e2f3529c981062f59989c208b6361d Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Thu, 14 Jan 2021 02:39:52 +0000 Subject: [PATCH 2/5] Special guava version for hadoop projects --- .../groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 7 ++++++- 1 file changed, 6 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 56fbdc4e9eec..b5891cc56ac1 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -435,7 +435,12 @@ 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 = "30.1-jre" + // Hadoop and Cassandra have dependency to old Guava version (BEAM-11626) + def guava_hadoop_version = "25.1-jre" + def guava_version = [ + ":sdks:java:io:hadoop-format", + ":sdks:java:io:hadoop-file-system" + ].contains(project.path) ? guava_hadoop_version : "30.1-jre" def hadoop_version = "2.10.1" def hamcrest_version = "2.1" def influxdb_version = "2.19" From 8fb92edd0420b1fbe7e4eaa32baadbfdbddc1d36 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Thu, 14 Jan 2021 00:44:28 -0500 Subject: [PATCH 3/5] sdks:java:io:cassandra also uses old guava --- .../main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 3 ++- 1 file changed, 2 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 b5891cc56ac1..fecae8f52830 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -438,8 +438,9 @@ class BeamModulePlugin implements Plugin { // Hadoop and Cassandra have dependency to old Guava version (BEAM-11626) def guava_hadoop_version = "25.1-jre" def guava_version = [ + ":sdks:java:io:cassandra", ":sdks:java:io:hadoop-format", - ":sdks:java:io:hadoop-file-system" + ":sdks:java:io:hadoop-file-system", ].contains(project.path) ? guava_hadoop_version : "30.1-jre" def hadoop_version = "2.10.1" def hamcrest_version = "2.1" From 90068145c665bdd72f74e2ad27731e61629e5071 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Thu, 14 Jan 2021 09:39:07 -0500 Subject: [PATCH 4/5] Declaring guava25projects variable --- .../apache/beam/gradle/BeamModulePlugin.groovy | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) 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 fecae8f52830..7f41a69ae248 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -83,6 +83,14 @@ class BeamModulePlugin implements Plugin { """ static AtomicInteger startingExpansionPortNumber = new AtomicInteger(18091) + /** List of paths to the projects that require Guava 25. Hadoop and Cassandra have dependency to + * methods available in the old Guava version (BEAM-11626) */ + static List guava25Projects = [ + ":sdks:java:io:cassandra", + ":sdks:java:io:hadoop-format", + ":sdks:java:io:hadoop-file-system", + ] + /** A class defining the set of configurable properties accepted by applyJavaNature. */ class JavaNatureConfiguration { /** Controls whether the spotbugs plugin is enabled and configured. */ @@ -435,13 +443,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" - // Hadoop and Cassandra have dependency to old Guava version (BEAM-11626) - def guava_hadoop_version = "25.1-jre" - def guava_version = [ - ":sdks:java:io:cassandra", - ":sdks:java:io:hadoop-format", - ":sdks:java:io:hadoop-file-system", - ].contains(project.path) ? guava_hadoop_version : "30.1-jre" + def guava_version = guava25Projects.contains(project.path) ? "25.1-jre" : "30.1-jre" def hadoop_version = "2.10.1" def hamcrest_version = "2.1" def influxdb_version = "2.19" From 0183d986504c234eddfbc8dd8891e64a53f2e5a9 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Fri, 22 Jan 2021 17:37:49 -0500 Subject: [PATCH 5/5] Breaking change notice --- 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