diff --git a/rules_java_gapic/java_gapic.bzl b/rules_java_gapic/java_gapic.bzl index 183eaef6ca..89e68000ba 100644 --- a/rules_java_gapic/java_gapic.bzl +++ b/rules_java_gapic/java_gapic.bzl @@ -124,6 +124,9 @@ def java_gapic_library( if gapic_yaml: file_args_dict[gapic_yaml] = "gapic-config" + if gapic_yaml: + file_args_dict[gapic_yaml] = "gapic-config" + # Check the allow-list. if service_yaml: service_yaml_in_allowlist = False diff --git a/src/main/java/com/google/api/generator/gapic/composer/RetrySettingsComposer.java b/src/main/java/com/google/api/generator/gapic/composer/RetrySettingsComposer.java index e9785d1b78..295dd0d639 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/RetrySettingsComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/RetrySettingsComposer.java @@ -38,6 +38,7 @@ import com.google.api.generator.engine.ast.Variable; import com.google.api.generator.engine.ast.VariableExpr; import com.google.api.generator.gapic.model.GapicBatchingSettings; +import com.google.api.generator.gapic.model.GapicLroRetrySettings; import com.google.api.generator.gapic.model.GapicRetrySettings; import com.google.api.generator.gapic.model.GapicServiceConfig; import com.google.api.generator.gapic.model.Method; @@ -55,6 +56,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; @@ -67,7 +69,7 @@ public class RetrySettingsComposer { private static final long LRO_DEFAULT_INITIAL_POLL_DELAY_MILLIS = 5000; private static final double LRO_DEFAULT_POLL_DELAY_MULTIPLIER = 1.5; private static final long LRO_DEFAULT_MAX_POLL_DELAY_MILLIS = 45000; - private static final long LRO_DEFAULT_TOTAL_POLL_TIMEOUT_MILLS = 300000; // 5 minutes. + private static final long LRO_DEFAULT_TOTAL_POLL_TIMEOUT_MILLIS = 300000; // 5 minutes. private static final double LRO_DEFAULT_MAX_RPC_TIMEOUT = 1.0; public static BlockStatement createRetryParamDefinitionsBlock( @@ -349,7 +351,7 @@ public static Expr createLroSettingsBuilderExpr( .build()) .build(); - Expr lroRetrySettingsExpr = createLroRetrySettingsExpr(); + Expr lroRetrySettingsExpr = createLroRetrySettingsExpr(service, method, serviceConfig); Expr pollAlgoExpr = MethodInvocationExpr.builder() .setStaticReferenceType(STATIC_TYPES.get("OperationTimedPollAlgorithm")) @@ -592,33 +594,49 @@ private static List createRetrySettingsExprs( return Arrays.asList(settingsAssignExpr, definitionsPutExpr); } - private static Expr createLroRetrySettingsExpr() { + private static Expr createLroRetrySettingsExpr( + Service service, Method method, GapicServiceConfig serviceConfig) { Expr lroRetrySettingsExpr = MethodInvocationExpr.builder() .setStaticReferenceType(STATIC_TYPES.get("RetrySettings")) .setMethodName("newBuilder") .build(); + long initialPollDelayMillis = LRO_DEFAULT_INITIAL_POLL_DELAY_MILLIS; + double pollDelayMultiplier = LRO_DEFAULT_POLL_DELAY_MULTIPLIER; + long maxPollDelayMillis = LRO_DEFAULT_MAX_POLL_DELAY_MILLIS; + long totalPollTimeoutMillis = LRO_DEFAULT_TOTAL_POLL_TIMEOUT_MILLIS; + if (serviceConfig.hasLroRetrySetting(service, method)) { + Optional lroRetrySettingsOpt = + serviceConfig.getLroRetrySetting(service, method); + if (lroRetrySettingsOpt.isPresent()) { + GapicLroRetrySettings lroRetrySettings = lroRetrySettingsOpt.get(); + initialPollDelayMillis = lroRetrySettings.initialPollDelayMillis(); + pollDelayMultiplier = lroRetrySettings.pollDelayMultiplier(); + maxPollDelayMillis = lroRetrySettings.maxPollDelayMillis(); + totalPollTimeoutMillis = lroRetrySettings.totalPollTimeoutMillis(); + } + } + lroRetrySettingsExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(lroRetrySettingsExpr) .setMethodName("setInitialRetryDelay") - .setArguments( - createDurationOfMillisExpr(toValExpr(LRO_DEFAULT_INITIAL_POLL_DELAY_MILLIS))) + .setArguments(createDurationOfMillisExpr(toValExpr(initialPollDelayMillis))) .build(); lroRetrySettingsExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(lroRetrySettingsExpr) .setMethodName("setRetryDelayMultiplier") - .setArguments(toValExpr(LRO_DEFAULT_POLL_DELAY_MULTIPLIER)) + .setArguments(toValExpr(pollDelayMultiplier)) .build(); lroRetrySettingsExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(lroRetrySettingsExpr) .setMethodName("setMaxRetryDelay") - .setArguments(createDurationOfMillisExpr(toValExpr(LRO_DEFAULT_MAX_POLL_DELAY_MILLIS))) + .setArguments(createDurationOfMillisExpr(toValExpr(maxPollDelayMillis))) .build(); Expr zeroDurationExpr = @@ -651,8 +669,7 @@ private static Expr createLroRetrySettingsExpr() { MethodInvocationExpr.builder() .setExprReferenceExpr(lroRetrySettingsExpr) .setMethodName("setTotalTimeout") - .setArguments( - createDurationOfMillisExpr(toValExpr(LRO_DEFAULT_TOTAL_POLL_TIMEOUT_MILLS))) + .setArguments(createDurationOfMillisExpr(toValExpr(totalPollTimeoutMillis))) .build(); lroRetrySettingsExpr = diff --git a/test/integration/goldens/redis/CloudRedisStubSettings.java b/test/integration/goldens/redis/CloudRedisStubSettings.java index 74901d60c5..6123d677eb 100644 --- a/test/integration/goldens/redis/CloudRedisStubSettings.java +++ b/test/integration/goldens/redis/CloudRedisStubSettings.java @@ -566,13 +566,13 @@ private static Builder initDefaults(Builder builder) { .setPollingAlgorithm( OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() - .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setInitialRetryDelay(Duration.ofMillis(60000L)) .setRetryDelayMultiplier(1.5) - .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setMaxRetryDelay(Duration.ofMillis(360000L)) .setInitialRpcTimeout(Duration.ZERO) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.ZERO) - .setTotalTimeout(Duration.ofMillis(300000L)) + .setTotalTimeout(Duration.ofMillis(7200000L)) .build())); builder @@ -590,13 +590,13 @@ private static Builder initDefaults(Builder builder) { .setPollingAlgorithm( OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() - .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setInitialRetryDelay(Duration.ofMillis(60000L)) .setRetryDelayMultiplier(1.5) - .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setMaxRetryDelay(Duration.ofMillis(360000L)) .setInitialRpcTimeout(Duration.ZERO) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.ZERO) - .setTotalTimeout(Duration.ofMillis(300000L)) + .setTotalTimeout(Duration.ofMillis(7200000L)) .build())); builder @@ -638,13 +638,13 @@ private static Builder initDefaults(Builder builder) { .setPollingAlgorithm( OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() - .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setInitialRetryDelay(Duration.ofMillis(60000L)) .setRetryDelayMultiplier(1.5) - .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setMaxRetryDelay(Duration.ofMillis(360000L)) .setInitialRpcTimeout(Duration.ZERO) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.ZERO) - .setTotalTimeout(Duration.ofMillis(300000L)) + .setTotalTimeout(Duration.ofMillis(18000000L)) .build())); builder @@ -662,13 +662,13 @@ private static Builder initDefaults(Builder builder) { .setPollingAlgorithm( OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() - .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setInitialRetryDelay(Duration.ofMillis(60000L)) .setRetryDelayMultiplier(1.5) - .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setMaxRetryDelay(Duration.ofMillis(360000L)) .setInitialRpcTimeout(Duration.ZERO) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.ZERO) - .setTotalTimeout(Duration.ofMillis(300000L)) + .setTotalTimeout(Duration.ofMillis(18000000L)) .build())); builder @@ -686,13 +686,13 @@ private static Builder initDefaults(Builder builder) { .setPollingAlgorithm( OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() - .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setInitialRetryDelay(Duration.ofMillis(60000L)) .setRetryDelayMultiplier(1.5) - .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setMaxRetryDelay(Duration.ofMillis(360000L)) .setInitialRpcTimeout(Duration.ZERO) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.ZERO) - .setTotalTimeout(Duration.ofMillis(300000L)) + .setTotalTimeout(Duration.ofMillis(1200000L)) .build())); builder @@ -710,13 +710,13 @@ private static Builder initDefaults(Builder builder) { .setPollingAlgorithm( OperationTimedPollAlgorithm.create( RetrySettings.newBuilder() - .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setInitialRetryDelay(Duration.ofMillis(60000L)) .setRetryDelayMultiplier(1.5) - .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setMaxRetryDelay(Duration.ofMillis(360000L)) .setInitialRpcTimeout(Duration.ZERO) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.ZERO) - .setTotalTimeout(Duration.ofMillis(300000L)) + .setTotalTimeout(Duration.ofMillis(1200000L)) .build())); return builder;