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)) {