Skip to content

Commit 9a9f15a

Browse files
committed
modify retryStrategy to address "socket operation timed out"
1 parent f2a2e42 commit 9a9f15a

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

labs/unicorn-store/infrastructure/db-setup/src/main/java/com/amazon/aws/DBSetupHandler.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010
import org.slf4j.LoggerFactory;
1111
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
1212
import software.amazon.awssdk.core.SdkSystemSetting;
13+
import software.amazon.awssdk.core.retry.RetryMode;
1314
import software.amazon.awssdk.http.crt.AwsCrtAsyncHttpClient;
1415
import software.amazon.awssdk.regions.Region;
16+
import software.amazon.awssdk.retries.api.BackoffStrategy;
1517
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient;
1618
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
1719

1820
import java.io.IOException;
1921
import java.sql.DriverManager;
2022
import java.sql.SQLException;
23+
import java.time.Duration;
2124
import java.util.concurrent.ExecutionException;
2225

2326
public class DBSetupHandler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
@@ -28,6 +31,11 @@ public class DBSetupHandler implements RequestHandler<APIGatewayProxyRequestEven
2831

2932
private static final SecretsManagerAsyncClient smClient = SecretsManagerAsyncClient
3033
.builder()
34+
.overrideConfiguration(o -> o.retryStrategy(b -> { // fix for 4% of accounts facing "socket operation timed out" during provisioning
35+
b.maxAttempts(10);
36+
b.backoffStrategy(BackoffStrategy.exponentialDelay(Duration.ofMillis(150),
37+
Duration.ofSeconds(30)));
38+
}))
3139
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
3240
.region(Region.of(System.getenv(SdkSystemSetting.AWS_REGION.environmentVariable())))
3341
.httpClientBuilder(AwsCrtAsyncHttpClient.builder())

0 commit comments

Comments
 (0)