1010import org .slf4j .LoggerFactory ;
1111import software .amazon .awssdk .auth .credentials .EnvironmentVariableCredentialsProvider ;
1212import software .amazon .awssdk .core .SdkSystemSetting ;
13+ import software .amazon .awssdk .core .retry .RetryMode ;
1314import software .amazon .awssdk .http .crt .AwsCrtAsyncHttpClient ;
1415import software .amazon .awssdk .regions .Region ;
16+ import software .amazon .awssdk .retries .api .BackoffStrategy ;
1517import software .amazon .awssdk .services .secretsmanager .SecretsManagerAsyncClient ;
1618import software .amazon .awssdk .services .secretsmanager .model .GetSecretValueRequest ;
1719
1820import java .io .IOException ;
1921import java .sql .DriverManager ;
2022import java .sql .SQLException ;
23+ import java .time .Duration ;
2124import java .util .concurrent .ExecutionException ;
2225
2326public 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