Skip to content

Commit

Permalink
Change STANDARD mode retry count for DynamoDB to match LEGACY same as…
Browse files Browse the repository at this point in the history
… in V1
  • Loading branch information
John Viegas authored and joviegas committed Mar 15, 2021
1 parent 154815c commit e5fb519
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 12 deletions.
6 changes: 6 additions & 0 deletions .changes/next-release/feature-AWSSDKforJavav2-e6a3a04.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"category": "Amazon DynamoDB",
"contributor": "",
"type": "feature",
"description": "Change STANDARD mode retry count which was 2 for DynamoDB to match LEGACY retry count which is 8."
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import software.amazon.awssdk.core.retry.backoff.BackoffStrategy;
import software.amazon.awssdk.core.retry.backoff.FullJitterBackoffStrategy;


/**
* Default retry policy for DynamoDB Client.
*/
Expand All @@ -36,6 +37,11 @@ final class DynamoDbRetryPolicy {
* Default max retry count for DynamoDB client, when using the LEGACY retry mode.
**/
private static final int LEGACY_MAX_ERROR_RETRY = 8;

/**
* Default max retry count for DynamoDB client, when using the STANDARD retry mode.
**/
private static final int STANDARD_MAX_ERROR_RETRY = LEGACY_MAX_ERROR_RETRY;

/**
* Default base sleep time for DynamoDB, when using the LEGACY retry mode.
Expand Down Expand Up @@ -69,18 +75,22 @@ public static RetryPolicy resolveRetryPolicy(SdkClientConfiguration config) {
.profileName(config.option(SdkClientOption.PROFILE_NAME))
.resolve();

if (retryMode != RetryMode.LEGACY) {
return AwsRetryPolicy.forRetryMode(retryMode)
.toBuilder()
.additionalRetryConditionsAllowed(false)
.build();
switch (retryMode) {
case LEGACY:
return AwsRetryPolicy.forRetryMode(RetryMode.LEGACY)
.toBuilder()
.additionalRetryConditionsAllowed(false)
.numRetries(LEGACY_MAX_ERROR_RETRY)
.backoffStrategy(LEGACY_BACKOFF_STRATEGY)
.build();
case STANDARD:
return AwsRetryPolicy.forRetryMode(retryMode)
.toBuilder()
.additionalRetryConditionsAllowed(false)
.numRetries(STANDARD_MAX_ERROR_RETRY)
.build();
default:
throw new IllegalArgumentException("Unknown retry mode: " + retryMode);
}

return AwsRetryPolicy.forRetryMode(RetryMode.LEGACY)
.toBuilder()
.additionalRetryConditionsAllowed(false)
.numRetries(LEGACY_MAX_ERROR_RETRY)
.backoffStrategy(LEGACY_BACKOFF_STRATEGY)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package software.amazon.awssdk.services.dynamodb;

import org.junit.Test;
import software.amazon.awssdk.core.SdkSystemSetting;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.retry.RetryPolicy;
import software.amazon.awssdk.profiles.ProfileFileSystemSetting;
import software.amazon.awssdk.testutils.EnvironmentVariableHelper;

import static org.assertj.core.api.Assertions.assertThat;

public class DynamoDbRetryPolicyTest {

private static final EnvironmentVariableHelper ENVIRONMENT_VARIABLE_HELPER = new EnvironmentVariableHelper();

@Test
public void test_numRetries_with_standardRetryPolicy() {
ENVIRONMENT_VARIABLE_HELPER.set(SdkSystemSetting.AWS_RETRY_MODE.environmentVariable(), "standard");
System.setProperty(ProfileFileSystemSetting.AWS_PROFILE.property(), "default");
final SdkClientConfiguration sdkClientConfiguration = SdkClientConfiguration.builder().build();
final RetryPolicy retryPolicy = DynamoDbRetryPolicy.resolveRetryPolicy(sdkClientConfiguration);
assertThat(retryPolicy.numRetries()).isEqualTo(8);
}

@Test
public void test_numRetries_with_legacyRetryPolicy() {
ENVIRONMENT_VARIABLE_HELPER.set(SdkSystemSetting.AWS_RETRY_MODE.environmentVariable(), "legacy");
System.setProperty(ProfileFileSystemSetting.AWS_PROFILE.property(), "default");
final SdkClientConfiguration sdkClientConfiguration = SdkClientConfiguration.builder().build();
final RetryPolicy retryPolicy = DynamoDbRetryPolicy.resolveRetryPolicy(sdkClientConfiguration);
assertThat(retryPolicy.numRetries()).isEqualTo(8);
}


}

0 comments on commit e5fb519

Please sign in to comment.