From 11029206254ad98de7d64dcccc51de0b323fe8a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hengfeng=20Li=E2=80=AC?= Date: Thu, 18 Dec 2025 23:02:22 +0000 Subject: [PATCH 1/2] fix: adjust the initial polling delay for ddl operations --- .../google/cloud/spanner/SpannerOptions.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java index a40ee051a9..743f33d601 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java @@ -1148,12 +1148,15 @@ private static String createCustomClientLibToken(String token) { protected Builder() { // Manually set retry and polling settings that work. - OperationTimedPollAlgorithm longRunningPollingAlgorithm = + + // The polling setting with a short initial delay as we expect + // it to return soon. + OperationTimedPollAlgorithm shortInitialPollingDelayAlgorithm = OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() .setInitialRpcTimeoutDuration(Duration.ofSeconds(60L)) .setMaxRpcTimeoutDuration(Duration.ofSeconds(600L)) - .setInitialRetryDelayDuration(Duration.ofSeconds(20L)) + .setInitialRetryDelayDuration(Duration.ofSeconds(1L)) .setMaxRetryDelayDuration(Duration.ofSeconds(45L)) .setRetryDelayMultiplier(1.5) .setRpcTimeoutMultiplier(1.5) @@ -1161,13 +1164,30 @@ protected Builder() { .build()); databaseAdminStubSettingsBuilder .createDatabaseOperationSettings() - .setPollingAlgorithm(longRunningPollingAlgorithm); + .setPollingAlgorithm(shortInitialPollingDelayAlgorithm); databaseAdminStubSettingsBuilder + .updateDatabaseDdlOperationSettings() + .setPollingAlgorithm(shortInitialPollingDelayAlgorithm); + + // The polling setting with a long initial delay as we expect + // the operation to take a bit long time to return. + OperationTimedPollAlgorithm longInitialPollingDelayAlgorithm = + OperationTimedPollAlgorithm.create( + RetrySettings.newBuilder() + .setInitialRpcTimeoutDuration(Duration.ofSeconds(60L)) + .setMaxRpcTimeoutDuration(Duration.ofSeconds(600L)) + .setInitialRetryDelayDuration(Duration.ofSeconds(20L)) + .setMaxRetryDelayDuration(Duration.ofSeconds(45L)) + .setRetryDelayMultiplier(1.5) + .setRpcTimeoutMultiplier(1.5) + .setTotalTimeoutDuration(Duration.ofHours(48L)) + .build()); + databaseAdminStubSettingsBuilder .createBackupOperationSettings() - .setPollingAlgorithm(longRunningPollingAlgorithm); + .setPollingAlgorithm(longInitialPollingDelayAlgorithm); databaseAdminStubSettingsBuilder .restoreDatabaseOperationSettings() - .setPollingAlgorithm(longRunningPollingAlgorithm); + .setPollingAlgorithm(longInitialPollingDelayAlgorithm); } Builder(SpannerOptions options) { From 1b78b488ffb7aa67df0b2c8c0bab2072ddf86df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hengfeng=20Li=E2=80=AC?= Date: Thu, 18 Dec 2025 23:45:05 +0000 Subject: [PATCH 2/2] fix the lint issue --- .../main/java/com/google/cloud/spanner/SpannerOptions.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java index 743f33d601..e86fb47a6f 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java @@ -1168,7 +1168,7 @@ protected Builder() { databaseAdminStubSettingsBuilder .updateDatabaseDdlOperationSettings() .setPollingAlgorithm(shortInitialPollingDelayAlgorithm); - + // The polling setting with a long initial delay as we expect // the operation to take a bit long time to return. OperationTimedPollAlgorithm longInitialPollingDelayAlgorithm = @@ -1182,7 +1182,7 @@ protected Builder() { .setRpcTimeoutMultiplier(1.5) .setTotalTimeoutDuration(Duration.ofHours(48L)) .build()); - databaseAdminStubSettingsBuilder + databaseAdminStubSettingsBuilder .createBackupOperationSettings() .setPollingAlgorithm(longInitialPollingDelayAlgorithm); databaseAdminStubSettingsBuilder