diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java index 917a5fdb61..19f41618fe 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java @@ -168,6 +168,7 @@ private synchronized void shutdown() { "com.google.cloud.spanner.watchdogPeriodSeconds"; private static final int DEFAULT_TIMEOUT_SECONDS = 30 * 60; private static final int DEFAULT_PERIOD_SECONDS = 10; + private static final int GRPC_KEEPALIVE_SECONDS = 2 * 60; private final ManagedInstantiatingExecutorProvider executorProvider; private boolean rpcIsClosed; @@ -242,6 +243,10 @@ public GapicSpannerRpc(final SpannerOptions options) { .setPoolSize(options.getNumChannels()) .setExecutorProvider(executorProvider) + // Set a keepalive time of 120 seconds to help long running + // commit GRPC calls succeed + .setKeepAliveTime(Duration.ofSeconds(GRPC_KEEPALIVE_SECONDS)) + // Then check if SpannerOptions provides an InterceptorProvider. Create a default // SpannerInterceptorProvider if none is provided .setInterceptorProvider(