From 3a47dd6d3648903c0f98d02e450a0aed543b863d Mon Sep 17 00:00:00 2001 From: Harsh <6162866+harsh62@users.noreply.github.com> Date: Thu, 18 Jan 2024 18:26:47 -0500 Subject: [PATCH] fix(datastore): Adding secureConnectionFailed as a retryable error (#3475) --- .../Sync/RequestRetryablePolicy.swift | 1 + .../Sync/RequestRetryablePolicyTests.swift | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/RequestRetryablePolicy.swift b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/RequestRetryablePolicy.swift index 4d087c5cbb..220834d187 100644 --- a/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/RequestRetryablePolicy.swift +++ b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/RequestRetryablePolicy.swift @@ -41,6 +41,7 @@ class RequestRetryablePolicy: RequestRetryable { .dataNotAllowed, .cannotParseResponse, .networkConnectionLost, + .secureConnectionFailed, .userAuthenticationRequired: let waitMillis = retryDelayInMillseconds(for: attemptNumber) return RequestRetryAdvice(shouldRetry: true, retryInterval: .milliseconds(waitMillis)) diff --git a/AmplifyPlugins/DataStore/Tests/AWSDataStorePluginTests/Sync/RequestRetryablePolicyTests.swift b/AmplifyPlugins/DataStore/Tests/AWSDataStorePluginTests/Sync/RequestRetryablePolicyTests.swift index 498fdaddc6..39a83e9015 100644 --- a/AmplifyPlugins/DataStore/Tests/AWSDataStorePluginTests/Sync/RequestRetryablePolicyTests.swift +++ b/AmplifyPlugins/DataStore/Tests/AWSDataStorePluginTests/Sync/RequestRetryablePolicyTests.swift @@ -210,6 +210,17 @@ class RequestRetryablePolicyTests: XCTestCase { XCTAssertEqual(retryAdvice.retryInterval, defaultTimeout) } + func testSecureConnectionFailedError() { + let retryableErrorCode = URLError.init(.secureConnectionFailed) + + let retryAdvice = retryPolicy.retryRequestAdvice(urlError: retryableErrorCode, + httpURLResponse: nil, + attemptNumber: 1) + + XCTAssert(retryAdvice.shouldRetry) + assertMilliseconds(retryAdvice.retryInterval, greaterThan: 200, lessThan: 300) + } + func testMaxValueRetryDelay() { let retryableErrorCode = URLError.init(.timedOut)