From a2e365f9ab71845868a73f91790e257872bac222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Mon, 10 Nov 2025 11:33:04 +0100 Subject: [PATCH] perf: experiment with lower poll delays --- .../cloud/spanner/spi/v1/GapicSpannerRpc.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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 cc375a98d3..b4a0bf7043 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 @@ -32,6 +32,7 @@ import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.api.gax.longrunning.OperationFuture; +import com.google.api.gax.longrunning.OperationTimedPollAlgorithm; import com.google.api.gax.retrying.ResultRetryAlgorithm; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.retrying.TimedAttemptSettings; @@ -485,15 +486,28 @@ public GapicSpannerRpc(final SpannerOptions options) { .build(); this.instanceAdminStub = GrpcInstanceAdminStub.create(instanceAdminStubSettings); - this.databaseAdminStubSettings = + DatabaseAdminStubSettings.Builder databaseAdminStubSettingsBuilder = options.getDatabaseAdminStubSettings().toBuilder() .setTransportChannelProvider(channelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .setTracerFactory( options.getApiTracerFactory( - /* isAdminClient= */ true, isEmulatorEnabled(options, emulatorHost))) - .build(); + /* isAdminClient= */ true, isEmulatorEnabled(options, emulatorHost))); + databaseAdminStubSettingsBuilder + .updateDatabaseDdlOperationSettings() + .setPollingAlgorithm( + OperationTimedPollAlgorithm.create( + RetrySettings.newBuilder() + .setInitialRetryDelayDuration(Duration.ofMillis(1500L)) + .setRetryDelayMultiplier(1.3) + .setMaxRetryDelayDuration(Duration.ofMillis(30000L)) + .setInitialRpcTimeoutDuration(Duration.ZERO) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeoutDuration(Duration.ZERO) + .setTotalTimeoutDuration(Duration.ofMillis(86400000L)) + .build())); + this.databaseAdminStubSettings = databaseAdminStubSettingsBuilder.build(); // Automatically retry RESOURCE_EXHAUSTED for GetOperation if auto-throttling of // administrative requests has been set. The GetOperation RPC is called repeatedly by gax