This is an automated email from the ASF dual-hosted git repository.
damccorm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 25518f07fe2 Upgrade Spanner to the latest version (#37552)
25518f07fe2 is described below
commit 25518f07fe285ebdc530092439b6d7f2558af4dd
Author: Sakthivel Subramanian
<[email protected]>
AuthorDate: Tue Feb 17 19:08:57 2026 +0530
Upgrade Spanner to the latest version (#37552)
* Upgrade Spanner to the latest version
* disable gRPC gcp extension
* Remove extra characters
* Update documentation
* Update the documentation
* disable gRPC gcp extension in tests
* Fix spotless
---
.../org/apache/beam/gradle/BeamModulePlugin.groovy | 5 -----
sdks/java/bom/gcp/build.gradle | 14 ++------------
sdks/java/io/google-cloud-platform/build.gradle | 16 +++-------------
.../apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java | 5 +++++
.../apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java | 7 ++++++-
.../apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java | 7 ++++++-
.../gcp/spanner/changestreams/it/IntegrationTestEnv.java | 7 ++++++-
7 files changed, 28 insertions(+), 33 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 ca4c5972daa..94eebb7060a 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -613,8 +613,6 @@ class BeamModulePlugin implements Plugin<Project> {
def google_ads_version = "33.0.0"
def google_clients_version = "2.0.0"
def google_cloud_bigdataoss_version = "2.2.26"
- // [bomupgrader] determined by: com.google.cloud:google-cloud-spanner,
consistent with: google_cloud_platform_libraries_bom
- def google_cloud_spanner_version = "6.104.0"
def google_code_gson_version = "2.10.1"
def google_oauth_clients_version = "1.34.1"
// [bomupgrader] determined by: io.grpc:grpc-netty, consistent with:
google_cloud_platform_libraries_bom
@@ -763,10 +761,7 @@ class BeamModulePlugin implements Plugin<Project> {
// libraries-bom version on
sdks/java/container/license_scripts/dep_urls_java.yaml
google_cloud_platform_libraries_bom :
"com.google.cloud:libraries-bom:26.75.0",
google_cloud_secret_manager :
"com.google.cloud:google-cloud-secretmanager", //
google_cloud_platform_libraries_bom sets version
- // TODO(#35868) remove pinned google_cloud_spanner_bom after tests or
upstream fixed
- google_cloud_spanner_bom :
"com.google.cloud:google-cloud-spanner-bom:$google_cloud_spanner_version",
google_cloud_spanner :
"com.google.cloud:google-cloud-spanner", // google_cloud_platform_libraries_bom
sets version
- google_cloud_spanner_test :
"com.google.cloud:google-cloud-spanner:$google_cloud_spanner_version:tests",
google_cloud_storage :
"com.google.cloud:google-cloud-storage", // google_cloud_platform_libraries_bom
sets version
google_cloud_tink :
"com.google.crypto.tink:tink:1.19.0",
google_cloud_vertexai :
"com.google.cloud:google-cloud-vertexai", //
google_cloud_platform_libraries_bom sets version
diff --git a/sdks/java/bom/gcp/build.gradle b/sdks/java/bom/gcp/build.gradle
index 5b62243c845..ccd3b5405eb 100644
--- a/sdks/java/bom/gcp/build.gradle
+++ b/sdks/java/bom/gcp/build.gradle
@@ -20,17 +20,7 @@ apply from: '../common.gradle'
dependencies {
api platform(project(":sdks:java:bom"))
- api platform(project.library.java.google_cloud_spanner_bom)
- api platform(project.library.java.google_cloud_platform_libraries_bom) {
- // TODO(https://github.com/apache/beam/issues/37328) remove exclude and
google_cloud_spanner_bom after upstream and/or tests fixed
- exclude group: "com.google.cloud", module: "google-cloud-spanner"
- exclude group: "com.google.api.grpc", module:
"proto-google-cloud-spanner-v1"
- exclude group: "com.google.api.grpc", module:
"proto-google-cloud-spanner-admin-instance-v1"
- exclude group: "com.google.api.grpc", module:
"proto-google-cloud-spanner-admin-database-v1"
- exclude group: "com.google.api.grpc", module:
"grpc-google-cloud-spanner-v1"
- exclude group: "com.google.api.grpc", module:
"grpc-google-cloud-spanner-admin-instance-v1"
- exclude group: "com.google.api.grpc", module:
"grpc-google-cloud-spanner-admin-database-v1"
- }
+ api platform(project.library.java.google_cloud_platform_libraries_bom)
constraints {
api project.library.java.guava
}
@@ -42,4 +32,4 @@ publishing {
artifactId = 'beam-sdks-java-google-cloud-platform-bom'
}
}
-}
\ No newline at end of file
+}
diff --git a/sdks/java/io/google-cloud-platform/build.gradle
b/sdks/java/io/google-cloud-platform/build.gradle
index 260740fbcf0..2686297c000 100644
--- a/sdks/java/io/google-cloud-platform/build.gradle
+++ b/sdks/java/io/google-cloud-platform/build.gradle
@@ -31,17 +31,7 @@ description = "Apache Beam :: SDKs :: Java :: IO :: Google
Cloud Platform"
ext.summary = "IO library to read and write Google Cloud Platform systems from
Beam."
dependencies {
-
implementation(enforcedPlatform(library.java.google_cloud_platform_libraries_bom))
{
- // TODO(https://github.com/apache/beam/issues/35868) remove exclude after
upstream and/or tests fixed
- exclude group: "com.google.cloud", module: "google-cloud-spanner"
- exclude group: "com.google.api.grpc", module:
"proto-google-cloud-spanner-v1"
- exclude group: "com.google.api.grpc", module:
"proto-google-cloud-spanner-admin-instance-v1"
- exclude group: "com.google.api.grpc", module:
"proto-google-cloud-spanner-admin-database-v1"
- exclude group: "com.google.api.grpc", module:
"grpc-google-cloud-spanner-v1"
- exclude group: "com.google.api.grpc", module:
"grpc-google-cloud-spanner-admin-instance-v1"
- exclude group: "com.google.api.grpc", module:
"grpc-google-cloud-spanner-admin-database-v1"
- }
- implementation(enforcedPlatform(library.java.google_cloud_spanner_bom))
+
implementation(enforcedPlatform(library.java.google_cloud_platform_libraries_bom))
implementation project(path: ":model:pipeline", configuration: "shadow")
implementation project(":runners:core-java")
implementation project(path: ":sdks:java:core", configuration: "shadow")
@@ -164,7 +154,7 @@ dependencies {
testImplementation library.java.mockito_core
testRuntimeOnly library.java.mockito_inline
testImplementation library.java.joda_time
- testImplementation library.java.google_cloud_spanner_test
+ testImplementation "com.google.cloud:google-cloud-spanner::tests"
testImplementation library.java.google_cloud_bigtable_emulator
testRuntimeOnly library.java.slf4j_jdk14
// everit_json is needed for Pubsub SchemaTransform that relies on
JSON-schema translation.
@@ -358,4 +348,4 @@ task postCommit {
description = "Integration tests of GCP connectors using the DirectRunner."
dependsOn integrationTest
dependsOn integrationTestKms
-}
\ No newline at end of file
+}
diff --git
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java
index 96ce735cad4..a3777099bfc 100644
---
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java
+++
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java
@@ -113,6 +113,11 @@ public class SpannerAccessor implements AutoCloseable {
static SpannerOptions buildSpannerOptions(SpannerConfig spannerConfig) {
SpannerOptions.Builder builder = SpannerOptions.newBuilder();
+ // TODO(https://github.com/apache/beam/issues/37451) Disable gRPC gcp
extension which was
+ // causing the application thread to stall.
+ // Remove this once Spanner fixes the hanging issue
+ builder.disableGrpcGcpExtension();
+
Set<Code> retryableCodes = new HashSet<>();
if (spannerConfig.getRetryableCodes() != null) {
retryableCodes.addAll(spannerConfig.getRetryableCodes());
diff --git
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java
index d0164717e15..512fd5998dd 100644
---
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java
+++
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java
@@ -114,7 +114,12 @@ public class SpannerReadIT {
project = options.as(GcpOptions.class).getProject();
}
- spanner =
SpannerOptions.newBuilder().setProjectId(project).build().getService();
+ spanner =
+ SpannerOptions.newBuilder()
+ .setProjectId(project)
+ .disableGrpcGcpExtension()
+ .build()
+ .getService();
databaseName = generateDatabaseName();
pgDatabaseName = "pg-" + databaseName;
diff --git
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java
index 75053a6efe2..91fe3473be0 100644
---
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java
+++
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java
@@ -121,7 +121,12 @@ public class SpannerWriteIT {
project = options.as(GcpOptions.class).getProject();
}
- spanner =
SpannerOptions.newBuilder().setProjectId(project).build().getService();
+ spanner =
+ SpannerOptions.newBuilder()
+ .setProjectId(project)
+ .disableGrpcGcpExtension()
+ .build()
+ .getService();
databaseName = generateDatabaseName();
pgDatabaseName = "pg-" + databaseName;
diff --git
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/IntegrationTestEnv.java
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/IntegrationTestEnv.java
index dc10e68c1e9..581b7f3cc2f 100644
---
a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/IntegrationTestEnv.java
+++
b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/IntegrationTestEnv.java
@@ -77,7 +77,12 @@ public class IntegrationTestEnv extends ExternalResource {
instanceId = options.getInstanceId();
generateDatabaseIds(options);
spanner =
-
SpannerOptions.newBuilder().setProjectId(projectId).setHost(host).build().getService();
+ SpannerOptions.newBuilder()
+ .setProjectId(projectId)
+ .setHost(host)
+ .disableGrpcGcpExtension()
+ .build()
+ .getService();
databaseAdminClient = spanner.getDatabaseAdminClient();
metadataTableName = generateTableName(METADATA_TABLE_NAME_PREFIX);