From 0ddee856622a2e71016615004c8871acfdf8f8d4 Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Tue, 17 Feb 2026 23:57:33 +0530 Subject: [PATCH 1/8] Add a configuration to wait for session creation --- .../sdk/io/gcp/spanner/SpannerAccessor.java | 13 ++++++++++ .../sdk/io/gcp/spanner/SpannerConfig.java | 25 +++++++++++++++++++ 2 files changed, 38 insertions(+) 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 a3777099bfcb..f441d3fc42f4 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 @@ -30,6 +30,7 @@ import com.google.cloud.spanner.DatabaseAdminClient; import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.SessionPoolOptions; import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.v1.stub.SpannerStubSettings; @@ -38,6 +39,7 @@ import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.PartialResultSet; import java.util.HashSet; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.beam.sdk.options.ValueProvider; @@ -61,6 +63,8 @@ public class SpannerAccessor implements AutoCloseable { */ private static final String USER_AGENT_PREFIX = "Apache_Beam_Java"; + static final java.time.Duration DEFAULT_SESSION_WAIT_DURATION = java.time.Duration.ofMinutes(5); + /** Instance ID to use when connecting to an experimental host. */ public static final String EXPERIMENTAL_HOST_INSTANCE_ID = "default"; @@ -270,6 +274,15 @@ static SpannerOptions buildSpannerOptions(SpannerConfig spannerConfig) { builder.setCredentials(credentials.get()); } + ValueProvider waitForSessionCreationDuration = + spannerConfig.getWaitForSessionCreationDuration(); + java.time.Duration waitDuration = + Optional.ofNullable(waitForSessionCreationDuration) + .map(ValueProvider::get) + .orElse(DEFAULT_SESSION_WAIT_DURATION); + builder.setSessionPoolOption( + SessionPoolOptions.newBuilder().setWaitForMinSessionsDuration( waitDuration).build()); + return builder.build(); } diff --git a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java index f52b8378cb6a..043a34e5943f 100644 --- a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java +++ b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java @@ -104,6 +104,8 @@ public String getHostValue() { public abstract @Nullable ValueProvider getCredentials(); + public abstract @Nullable ValueProvider getWaitForSessionCreationDuration(); + abstract Builder toBuilder(); public static SpannerConfig create() { @@ -189,6 +191,9 @@ abstract Builder setExecuteStreamingSqlRetrySettings( abstract Builder setPlainText(ValueProvider plainText); + abstract Builder setWaitForSessionCreationDuration( + ValueProvider waitForSessionCreationDuration); + public abstract SpannerConfig build(); } @@ -389,4 +394,24 @@ public SpannerConfig withUsingPlainTextChannel(ValueProvider plainText) public SpannerConfig withUsingPlainTextChannel(boolean plainText) { return withUsingPlainTextChannel(ValueProvider.StaticValueProvider.of(plainText)); } + + /** + * Sets the wait time for a multiplexed session to be available when creating a database client. + * + *

Setting this will block the {@link com.google.cloud.spanner.DatabaseClient} creation. + * + * @param waitForSessionCreationDuration The duration to wait. Defaults to {@link + * SpannerAccessor#DEFAULT_SESSION_WAIT_DURATION}. + * @return {@link SpannerConfig} + */ + public SpannerConfig withWaitForSessionCreationDuration( + ValueProvider waitForSessionCreationDuration) { + return toBuilder().setWaitForSessionCreationDuration(waitForSessionCreationDuration).build(); + } + + public SpannerConfig withWaitForSessionCreationDuration( + java.time.Duration waitForSessionCreationDuration) { + return withWaitForSessionCreationDuration( + ValueProvider.StaticValueProvider.of(waitForSessionCreationDuration)); + } } From c1dee3bcdae870a7fee9b53a6316aa13e81973be Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Wed, 18 Feb 2026 00:16:40 +0530 Subject: [PATCH 2/8] Address spotless comments --- .../beam/sdk/io/gcp/spanner/SpannerAccessor.java | 16 ++++++++-------- .../beam/sdk/io/gcp/spanner/SpannerConfig.java | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) 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 f441d3fc42f4..51a5d616cb6c 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 @@ -274,14 +274,14 @@ static SpannerOptions buildSpannerOptions(SpannerConfig spannerConfig) { builder.setCredentials(credentials.get()); } - ValueProvider waitForSessionCreationDuration = - spannerConfig.getWaitForSessionCreationDuration(); - java.time.Duration waitDuration = - Optional.ofNullable(waitForSessionCreationDuration) - .map(ValueProvider::get) - .orElse(DEFAULT_SESSION_WAIT_DURATION); - builder.setSessionPoolOption( - SessionPoolOptions.newBuilder().setWaitForMinSessionsDuration( waitDuration).build()); + ValueProvider waitForSessionCreationDuration = + spannerConfig.getWaitForSessionCreationDuration(); + java.time.Duration waitDuration = + Optional.ofNullable(waitForSessionCreationDuration) + .map(ValueProvider::get) + .orElse(DEFAULT_SESSION_WAIT_DURATION); + builder.setSessionPoolOption( + SessionPoolOptions.newBuilder().setWaitForMinSessionsDuration(waitDuration).build()); return builder.build(); } diff --git a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java index 043a34e5943f..a17c851f38a0 100644 --- a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java +++ b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java @@ -192,7 +192,7 @@ abstract Builder setExecuteStreamingSqlRetrySettings( abstract Builder setPlainText(ValueProvider plainText); abstract Builder setWaitForSessionCreationDuration( - ValueProvider waitForSessionCreationDuration); + ValueProvider waitForSessionCreationDuration); public abstract SpannerConfig build(); } @@ -405,13 +405,13 @@ public SpannerConfig withUsingPlainTextChannel(boolean plainText) { * @return {@link SpannerConfig} */ public SpannerConfig withWaitForSessionCreationDuration( - ValueProvider waitForSessionCreationDuration) { + ValueProvider waitForSessionCreationDuration) { return toBuilder().setWaitForSessionCreationDuration(waitForSessionCreationDuration).build(); } public SpannerConfig withWaitForSessionCreationDuration( - java.time.Duration waitForSessionCreationDuration) { + java.time.Duration waitForSessionCreationDuration) { return withWaitForSessionCreationDuration( - ValueProvider.StaticValueProvider.of(waitForSessionCreationDuration)); + ValueProvider.StaticValueProvider.of(waitForSessionCreationDuration)); } } From 0028a54f431dae8fe64985aff298a2539751ae37 Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Wed, 18 Feb 2026 10:47:44 +0530 Subject: [PATCH 3/8] Add session wait time to tests --- .../beam/sdk/io/gcp/spanner/SpannerReadIT.java | 15 +++++---------- .../beam/sdk/io/gcp/spanner/SpannerWriteIT.java | 14 +++++--------- .../changestreams/it/IntegrationTestEnv.java | 11 +++++------ 3 files changed, 15 insertions(+), 25 deletions(-) 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 512fd5998ddb..c30c325e2969 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 @@ -20,16 +20,7 @@ import static org.junit.Assert.assertEquals; import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.spanner.Database; -import com.google.cloud.spanner.DatabaseAdminClient; -import com.google.cloud.spanner.DatabaseClient; -import com.google.cloud.spanner.DatabaseId; -import com.google.cloud.spanner.Dialect; -import com.google.cloud.spanner.Mutation; -import com.google.cloud.spanner.Spanner; -import com.google.cloud.spanner.SpannerOptions; -import com.google.cloud.spanner.Struct; -import com.google.cloud.spanner.TimestampBound; +import com.google.cloud.spanner.*; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; import java.util.ArrayList; import java.util.Collections; @@ -118,6 +109,10 @@ public void setUp() throws Exception { SpannerOptions.newBuilder() .setProjectId(project) .disableGrpcGcpExtension() + .setSessionPoolOption( + SessionPoolOptions.newBuilder() + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) + .build()) .build() .getService(); 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 91fe3473be03..051f956a728a 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 @@ -22,15 +22,7 @@ import static org.hamcrest.Matchers.is; import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.spanner.Database; -import com.google.cloud.spanner.DatabaseAdminClient; -import com.google.cloud.spanner.DatabaseId; -import com.google.cloud.spanner.Dialect; -import com.google.cloud.spanner.Mutation; -import com.google.cloud.spanner.ResultSet; -import com.google.cloud.spanner.Spanner; -import com.google.cloud.spanner.SpannerOptions; -import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.*; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; import java.io.Serializable; import java.util.Collections; @@ -125,6 +117,10 @@ public void setUp() throws Exception { SpannerOptions.newBuilder() .setProjectId(project) .disableGrpcGcpExtension() + .setSessionPoolOption( + SessionPoolOptions.newBuilder() + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) + .build()) .build() .getService(); 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 581b7f3cc2f5..f3ccc7190b17 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 @@ -17,12 +17,7 @@ */ package org.apache.beam.sdk.io.gcp.spanner.changestreams.it; -import com.google.cloud.spanner.DatabaseAdminClient; -import com.google.cloud.spanner.DatabaseClient; -import com.google.cloud.spanner.DatabaseId; -import com.google.cloud.spanner.Dialect; -import com.google.cloud.spanner.Spanner; -import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -81,6 +76,10 @@ protected void before() throws Throwable { .setProjectId(projectId) .setHost(host) .disableGrpcGcpExtension() + .setSessionPoolOption( + SessionPoolOptions.newBuilder() + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) + .build()) .build() .getService(); databaseAdminClient = spanner.getDatabaseAdminClient(); From d07f39821c0c51c31383f56a925d73a18529f102 Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Wed, 18 Feb 2026 13:46:51 +0530 Subject: [PATCH 4/8] Fix checkstyle issue --- .../beam/sdk/io/gcp/spanner/SpannerReadIT.java | 12 +++++++++++- .../beam/sdk/io/gcp/spanner/SpannerWriteIT.java | 11 ++++++++++- .../spanner/changestreams/it/IntegrationTestEnv.java | 8 +++++++- 3 files changed, 28 insertions(+), 3 deletions(-) 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 c30c325e2969..34c839d3e1e6 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 @@ -20,7 +20,17 @@ import static org.junit.Assert.assertEquals; import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.spanner.*; +import com.google.cloud.spanner.Database; +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.Mutation; +import com.google.cloud.spanner.SessionPoolOptions; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.Struct; +import com.google.cloud.spanner.TimestampBound; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; import java.util.ArrayList; import java.util.Collections; 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 051f956a728a..df23435d82ab 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 @@ -22,7 +22,16 @@ import static org.hamcrest.Matchers.is; import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.spanner.*; +import com.google.cloud.spanner.Database; +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.Mutation; +import com.google.cloud.spanner.ResultSet; +import com.google.cloud.spanner.SessionPoolOptions; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.Statement; import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; import java.io.Serializable; import java.util.Collections; 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 f3ccc7190b17..b0ce19b9f003 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 @@ -17,7 +17,13 @@ */ package org.apache.beam.sdk.io.gcp.spanner.changestreams.it; -import com.google.cloud.spanner.*; +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.SessionPoolOptions; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; From e7e137ed3d239b2c037097ca103c5ad447becd19 Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Wed, 18 Feb 2026 19:04:23 +0530 Subject: [PATCH 5/8] Add an description --- .../java/org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java | 1 + 1 file changed, 1 insertion(+) 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 51a5d616cb6c..eb1860902c6f 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 @@ -63,6 +63,7 @@ public class SpannerAccessor implements AutoCloseable { */ private static final String USER_AGENT_PREFIX = "Apache_Beam_Java"; + // Default wait time for session creation static final java.time.Duration DEFAULT_SESSION_WAIT_DURATION = java.time.Duration.ofMinutes(5); /** Instance ID to use when connecting to an experimental host. */ From 84301abc6287ea641f8885fd8bd999230bb9423d Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Wed, 18 Feb 2026 21:19:52 +0530 Subject: [PATCH 6/8] Set wait time to 0 --- .../org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java | 2 +- .../java/org/apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java | 2 +- .../java/org/apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java | 2 +- .../sdk/io/gcp/spanner/changestreams/it/IntegrationTestEnv.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 eb1860902c6f..a1ae69f8aa79 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 @@ -64,7 +64,7 @@ public class SpannerAccessor implements AutoCloseable { private static final String USER_AGENT_PREFIX = "Apache_Beam_Java"; // Default wait time for session creation - static final java.time.Duration DEFAULT_SESSION_WAIT_DURATION = java.time.Duration.ofMinutes(5); + static final java.time.Duration DEFAULT_SESSION_WAIT_DURATION = java.time.Duration.ofMinutes(0); /** Instance ID to use when connecting to an experimental host. */ public static final String EXPERIMENTAL_HOST_INSTANCE_ID = "default"; 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 34c839d3e1e6..0ad7c06e96d5 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 @@ -121,7 +121,7 @@ public void setUp() throws Exception { .disableGrpcGcpExtension() .setSessionPoolOption( SessionPoolOptions.newBuilder() - .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(0)) .build()) .build() .getService(); 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 df23435d82ab..651d1e20b6ff 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 @@ -128,7 +128,7 @@ public void setUp() throws Exception { .disableGrpcGcpExtension() .setSessionPoolOption( SessionPoolOptions.newBuilder() - .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(0)) .build()) .build() .getService(); 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 b0ce19b9f003..cc9df49922dc 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 @@ -84,7 +84,7 @@ protected void before() throws Throwable { .disableGrpcGcpExtension() .setSessionPoolOption( SessionPoolOptions.newBuilder() - .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(0)) .build()) .build() .getService(); From 7f3b453f50e47542a84ba5574129b4830569e71d Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Thu, 19 Feb 2026 23:18:57 +0530 Subject: [PATCH 7/8] Increase wait time --- .../org/apache/beam/sdk/io/gcp/spanner/SpannerAccessor.java | 2 +- .../java/org/apache/beam/sdk/io/gcp/spanner/SpannerReadIT.java | 2 +- .../java/org/apache/beam/sdk/io/gcp/spanner/SpannerWriteIT.java | 2 +- .../sdk/io/gcp/spanner/changestreams/it/IntegrationTestEnv.java | 2 +- .../it/SpannerChangeStreamOrderedWithinKeyGloballyIT.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) 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 a1ae69f8aa79..eb1860902c6f 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 @@ -64,7 +64,7 @@ public class SpannerAccessor implements AutoCloseable { private static final String USER_AGENT_PREFIX = "Apache_Beam_Java"; // Default wait time for session creation - static final java.time.Duration DEFAULT_SESSION_WAIT_DURATION = java.time.Duration.ofMinutes(0); + static final java.time.Duration DEFAULT_SESSION_WAIT_DURATION = java.time.Duration.ofMinutes(5); /** Instance ID to use when connecting to an experimental host. */ public static final String EXPERIMENTAL_HOST_INSTANCE_ID = "default"; 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 0ad7c06e96d5..34c839d3e1e6 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 @@ -121,7 +121,7 @@ public void setUp() throws Exception { .disableGrpcGcpExtension() .setSessionPoolOption( SessionPoolOptions.newBuilder() - .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(0)) + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) .build()) .build() .getService(); 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 651d1e20b6ff..df23435d82ab 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 @@ -128,7 +128,7 @@ public void setUp() throws Exception { .disableGrpcGcpExtension() .setSessionPoolOption( SessionPoolOptions.newBuilder() - .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(0)) + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) .build()) .build() .getService(); 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 cc9df49922dc..b0ce19b9f003 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 @@ -84,7 +84,7 @@ protected void before() throws Throwable { .disableGrpcGcpExtension() .setSessionPoolOption( SessionPoolOptions.newBuilder() - .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(0)) + .setWaitForMinSessionsDuration(java.time.Duration.ofMinutes(5)) .build()) .build() .getService(); diff --git a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedWithinKeyGloballyIT.java b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedWithinKeyGloballyIT.java index 2b2c134032b3..c5fdbe80c7a2 100644 --- a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedWithinKeyGloballyIT.java +++ b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedWithinKeyGloballyIT.java @@ -99,7 +99,7 @@ public void testOrderedWithinKey() { .withDatabaseId(databaseId); // Get the time increment interval at which to flush data changes ordered by key. - final long timeIncrementInSeconds = 2; + final long timeIncrementInSeconds = 10; // Commit a initial transaction to get the timestamp to start reading from. List mutations = new ArrayList<>(); From bbaaeb1906664915e304d41b35dc81ab0df912b7 Mon Sep 17 00:00:00 2001 From: Sakthivel Subramanian Date: Fri, 20 Feb 2026 18:44:30 +0530 Subject: [PATCH 8/8] Increase wait time --- ...SpannerChangeStreamOrderedByTimestampAndTransactionIdIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedByTimestampAndTransactionIdIT.java b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedByTimestampAndTransactionIdIT.java index 21f6eef79362..5a05c9a5452f 100644 --- a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedByTimestampAndTransactionIdIT.java +++ b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/it/SpannerChangeStreamOrderedByTimestampAndTransactionIdIT.java @@ -106,7 +106,7 @@ public void testTransactionBoundaries() { // Commit a initial transaction to get the timestamp to start reading from. List mutations = new ArrayList<>(); mutations.add(insertRecordMutation(0, "FirstName0", "LastName0")); - final long timeIncrementInSeconds = 2; + final long timeIncrementInSeconds = 10; final Timestamp startTimestamp = databaseClient.write(mutations); writeTransactionsToDatabase();