@@ -104,6 +104,7 @@ public class SpannerOptions extends ServiceOptions<Spanner, SpannerOptions> {
104104 private final DatabaseAdminStubSettings databaseAdminStubSettings ;
105105 private final Duration partitionedDmlTimeout ;
106106 private final boolean autoThrottleAdministrativeRequests ;
107+ private final RetrySettings retryAdministrativeRequestsSettings ;
107108 private final boolean trackTransactionStarter ;
108109 /**
109110 * These are the default {@link QueryOptions} defined by the user on this {@link SpannerOptions}.
@@ -554,6 +555,7 @@ private SpannerOptions(Builder builder) {
554555 }
555556 partitionedDmlTimeout = builder .partitionedDmlTimeout ;
556557 autoThrottleAdministrativeRequests = builder .autoThrottleAdministrativeRequests ;
558+ retryAdministrativeRequestsSettings = builder .retryAdministrativeRequestsSettings ;
557559 trackTransactionStarter = builder .trackTransactionStarter ;
558560 defaultQueryOptions = builder .defaultQueryOptions ;
559561 envQueryOptions = builder .getEnvironmentQueryOptions ();
@@ -606,6 +608,13 @@ public static class Builder
606608 extends ServiceOptions .Builder <Spanner , SpannerOptions , SpannerOptions .Builder > {
607609 static final int DEFAULT_PREFETCH_CHUNKS = 4 ;
608610 static final QueryOptions DEFAULT_QUERY_OPTIONS = QueryOptions .getDefaultInstance ();
611+ static final RetrySettings DEFAULT_ADMIN_REQUESTS_LIMIT_EXCEEDED_RETRY_SETTINGS =
612+ RetrySettings .newBuilder ()
613+ .setInitialRetryDelay (Duration .ofSeconds (5L ))
614+ .setRetryDelayMultiplier (2.0 )
615+ .setMaxRetryDelay (Duration .ofSeconds (60L ))
616+ .setMaxAttempts (10 )
617+ .build ();
609618 private final ImmutableSet <String > allowedClientLibTokens =
610619 ImmutableSet .of (
611620 ServiceOptions .getGoogApiClientLibName (),
@@ -632,6 +641,8 @@ public static class Builder
632641 private DatabaseAdminStubSettings .Builder databaseAdminStubSettingsBuilder =
633642 DatabaseAdminStubSettings .newBuilder ();
634643 private Duration partitionedDmlTimeout = Duration .ofHours (2L );
644+ private RetrySettings retryAdministrativeRequestsSettings =
645+ DEFAULT_ADMIN_REQUESTS_LIMIT_EXCEEDED_RETRY_SETTINGS ;
635646 private boolean autoThrottleAdministrativeRequests = false ;
636647 private boolean trackTransactionStarter = false ;
637648 private Map <DatabaseId , QueryOptions > defaultQueryOptions = new HashMap <>();
@@ -680,6 +691,7 @@ private Builder() {
680691 this .databaseAdminStubSettingsBuilder = options .databaseAdminStubSettings .toBuilder ();
681692 this .partitionedDmlTimeout = options .partitionedDmlTimeout ;
682693 this .autoThrottleAdministrativeRequests = options .autoThrottleAdministrativeRequests ;
694+ this .retryAdministrativeRequestsSettings = options .retryAdministrativeRequestsSettings ;
683695 this .trackTransactionStarter = options .trackTransactionStarter ;
684696 this .defaultQueryOptions = options .defaultQueryOptions ;
685697 this .callCredentialsProvider = options .callCredentialsProvider ;
@@ -892,6 +904,16 @@ public Builder setAutoThrottleAdministrativeRequests() {
892904 return this ;
893905 }
894906
907+ /**
908+ * Sets the retry settings for retrying administrative requests when the quote of administrative
909+ * requests per minute has been exceeded.
910+ */
911+ Builder setRetryAdministrativeRequestsSettings (
912+ RetrySettings retryAdministrativeRequestsSettings ) {
913+ this .retryAdministrativeRequestsSettings = retryAdministrativeRequestsSettings ;
914+ return this ;
915+ }
916+
895917 /**
896918 * Instructs the client library to track the first request of each read/write transaction. This
897919 * statement will include a BeginTransaction option and will return a transaction id as part of
@@ -1092,6 +1114,10 @@ public boolean isAutoThrottleAdministrativeRequests() {
10921114 return autoThrottleAdministrativeRequests ;
10931115 }
10941116
1117+ public RetrySettings getRetryAdministrativeRequestsSettings () {
1118+ return retryAdministrativeRequestsSettings ;
1119+ }
1120+
10951121 public boolean isTrackTransactionStarter () {
10961122 return trackTransactionStarter ;
10971123 }
0 commit comments