From 1fbe25f10e591bbc4d1b84f3b3b8e175a25a4863 Mon Sep 17 00:00:00 2001
From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com>
Date: Fri, 10 Jul 2020 22:38:56 +0000
Subject: [PATCH] fix: get maxAttempts from maxAttemptsProvider
---
packages/middleware-retry/package.json | 1 -
.../src/defaultStrategy.spec.ts | 41 -------------------
.../middleware-retry/src/defaultStrategy.ts | 14 +------
3 files changed, 1 insertion(+), 55 deletions(-)
diff --git a/packages/middleware-retry/package.json b/packages/middleware-retry/package.json
index 62c78f846e59..f5d5b0e35bc7 100644
--- a/packages/middleware-retry/package.json
+++ b/packages/middleware-retry/package.json
@@ -18,7 +18,6 @@
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/protocol-http": "1.0.0-gamma.2",
- "@aws-sdk/retry-config-provider": "1.0.0-gamma.1",
"@aws-sdk/service-error-classification": "1.0.0-gamma.2",
"@aws-sdk/types": "1.0.0-gamma.2",
"react-native-get-random-values": "^1.4.0",
diff --git a/packages/middleware-retry/src/defaultStrategy.spec.ts b/packages/middleware-retry/src/defaultStrategy.spec.ts
index 56d7cbc2be1c..6b7ca4d19960 100644
--- a/packages/middleware-retry/src/defaultStrategy.spec.ts
+++ b/packages/middleware-retry/src/defaultStrategy.spec.ts
@@ -6,7 +6,6 @@ import { StandardRetryStrategy, RetryQuota } from "./defaultStrategy";
import { getDefaultRetryQuota } from "./defaultRetryQuota";
import { HttpRequest } from "@aws-sdk/protocol-http";
import { v4 } from "uuid";
-import { DEFAULT_MAX_ATTEMPTS } from "@aws-sdk/retry-config-provider";
jest.mock("@aws-sdk/service-error-classification");
jest.mock("./delayDecider");
@@ -477,44 +476,4 @@ describe("defaultStrategy", () => {
((isInstance as unknown) as jest.Mock).mockReturnValue(false);
});
});
-
- describe("defaults maxAttempts to DEFAULT_MAX_ATTEMPTS", () => {
- it("when maxAttemptsProvider throws error", async () => {
- const { isInstance } = HttpRequest;
- ((isInstance as unknown) as jest.Mock).mockReturnValue(true);
-
- next = jest.fn((args) => {
- expect(args.request.headers["amz-sdk-request"]).toBe(`attempt=1; max=${DEFAULT_MAX_ATTEMPTS}`);
- return Promise.resolve({
- response: "mockResponse",
- output: { $metadata: {} },
- });
- });
-
- const retryStrategy = new StandardRetryStrategy(() => Promise.reject("ERROR"));
- await retryStrategy.retry(next, { request: { headers: {} } } as any);
-
- expect(next).toHaveBeenCalledTimes(1);
- ((isInstance as unknown) as jest.Mock).mockReturnValue(false);
- });
-
- it("when parseInt fails on maxAttemptsProvider", async () => {
- const { isInstance } = HttpRequest;
- ((isInstance as unknown) as jest.Mock).mockReturnValue(true);
-
- next = jest.fn((args) => {
- expect(args.request.headers["amz-sdk-request"]).toBe(`attempt=1; max=${DEFAULT_MAX_ATTEMPTS}`);
- return Promise.resolve({
- response: "mockResponse",
- output: { $metadata: {} },
- });
- });
-
- const retryStrategy = new StandardRetryStrategy(() => Promise.resolve("not-a-number"));
- await retryStrategy.retry(next, { request: { headers: {} } } as any);
-
- expect(next).toHaveBeenCalledTimes(1);
- ((isInstance as unknown) as jest.Mock).mockReturnValue(false);
- });
- });
});
diff --git a/packages/middleware-retry/src/defaultStrategy.ts b/packages/middleware-retry/src/defaultStrategy.ts
index 43cb56943f7f..65cae9339768 100644
--- a/packages/middleware-retry/src/defaultStrategy.ts
+++ b/packages/middleware-retry/src/defaultStrategy.ts
@@ -7,7 +7,6 @@ import { FinalizeHandler, MetadataBearer, FinalizeHandlerArguments, RetryStrateg
import { getDefaultRetryQuota } from "./defaultRetryQuota";
import { HttpRequest } from "@aws-sdk/protocol-http";
import { v4 } from "uuid";
-import { DEFAULT_MAX_ATTEMPTS } from "@aws-sdk/retry-config-provider";
/**
* Determines whether an error is retryable based on the number of retries
@@ -74,17 +73,6 @@ export class StandardRetryStrategy implements RetryStrategy {
return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);
}
- private async getMaxAttempts() {
- let maxAttemptsStr: string;
- try {
- maxAttemptsStr = await this.maxAttemptsProvider();
- } catch (error) {
- maxAttemptsStr = DEFAULT_MAX_ATTEMPTS;
- }
- const maxAttempts = parseInt(maxAttemptsStr);
- return Number.isNaN(maxAttempts) ? parseInt(DEFAULT_MAX_ATTEMPTS) : maxAttempts;
- }
-
async retry(
next: FinalizeHandler,
args: FinalizeHandlerArguments
@@ -93,7 +81,7 @@ export class StandardRetryStrategy implements RetryStrategy {
let attempts = 0;
let totalDelay = 0;
- const maxAttempts = await this.getMaxAttempts();
+ const maxAttempts = parseInt(await this.maxAttemptsProvider());
const { request } = args;
if (HttpRequest.isInstance(request)) {