Skip to content

Commit 3013746

Browse files
authored
chore: kickoff release
2 parents 4e7a74f + 70f56f6 commit 3013746

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

AmplifyPlugins/Core/AWSPluginsCore/WebSocket/WebSocketClient.swift

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,13 @@ extension WebSocketClient: URLSessionWebSocketDelegate {
248248

249249
let nsError = error as NSError
250250
switch (nsError.domain, nsError.code) {
251-
case (NSURLErrorDomain.self, NSURLErrorNetworkConnectionLost), // connection lost
252-
(NSPOSIXErrorDomain.self, Int(ECONNABORTED)): // background to foreground
251+
case (NSURLErrorDomain.self, NSURLErrorNetworkConnectionLost),
252+
(NSURLErrorDomain.self, NSURLErrorCannotConnectToHost),
253+
(NSURLErrorDomain.self, NSURLErrorTimedOut),
254+
(NSURLErrorDomain.self, NSURLErrorNotConnectedToInternet),
255+
(NSURLErrorDomain.self, NSURLErrorDataNotAllowed),
256+
(NSPOSIXErrorDomain.self, Int(ECONNABORTED)),
257+
(NSPOSIXErrorDomain.self, 57):
253258
self.subject.send(.error(WebSocketClient.Error.connectionLost))
254259
Task { [weak self] in
255260
await self?.networkMonitor.updateState(.offline)
@@ -283,11 +288,11 @@ extension WebSocketClient {
283288
}
284289

285290
switch stateChange {
286-
case (.online, .offline):
287-
log.debug("[WebSocketClient] NetworkMonitor - Device went offline")
291+
case (.online, .offline), (.none, .offline), (.online, .none):
292+
log.debug("[WebSocketClient] NetworkMonitor - Device went offline or network status became unknown")
288293
self.connection?.cancel(with: .invalid, reason: nil)
289294
self.subject.send(.disconnected(.invalid, nil))
290-
case (.offline, .online):
295+
case (.offline, .online), (.none, .online):
291296
log.debug("[WebSocketClient] NetworkMonitor - Device back online")
292297
await self.createConnectionAndRead()
293298
default:
@@ -335,13 +340,19 @@ extension WebSocketClient {
335340
}
336341

337342
switch closeCode {
338-
case .internalServerError:
343+
case .internalServerError,
344+
.abnormalClosure,
345+
.invalid,
346+
.policyViolation:
347+
log.debug("[WebSocketClient] Retrying on closeCode: \(closeCode)")
339348
let delayInMs = await retryWithJitter.next()
340349
Task { [weak self] in
341350
try await Task.sleep(nanoseconds: UInt64(delayInMs) * 1_000_000)
342351
await self?.createConnectionAndRead()
343352
}
344-
default: break
353+
default:
354+
log.debug("[WebSocketClient] Not retrying for closeCode: \(closeCode)")
355+
break
345356
}
346357

347358
}

AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Support/Internal/StorageMultipartUpload.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -229,14 +229,14 @@ enum StorageMultipartUpload {
229229
case .parts(let uploadId, let uploadFile, let partSize, let parts):
230230
self = .paused(uploadId: uploadId, uploadFile: uploadFile, partSize: partSize, parts: parts)
231231
default:
232-
throw Failure.invalidStateTransition(reason: "Cannot pause from current state: \(self)")
232+
throw Failure.invalidStateTransition(reason: "Cannot pause upload: upload must be in progress")
233233
}
234234
case .resuming:
235235
switch self {
236236
case .paused(let uploadId, let uploadFile, let partSize, let parts):
237237
self = .parts(uploadId: uploadId, uploadFile: uploadFile, partSize: partSize, parts: parts)
238238
default:
239-
throw Failure.invalidStateTransition(reason: "Cannot resume from current state: \(self)")
239+
throw Failure.invalidStateTransition(reason: "Cannot resume upload: upload must be paused")
240240
}
241241
break
242242
case .completing(let taskIdentifier):
@@ -246,20 +246,20 @@ enum StorageMultipartUpload {
246246
case .parts:
247247
self = .completed(uploadId: uploadId)
248248
default:
249-
throw Failure.invalidStateTransition(reason: "Cannot complete from current state: \(self)")
249+
throw Failure.invalidStateTransition(reason: "Cannot complete upload: upload must be in progress")
250250
}
251251
case .aborting(let error):
252252
if let uploadId = uploadId {
253253
self = .aborting(uploadId: uploadId, error: error)
254254
} else {
255-
throw Failure.invalidStateTransition(reason: "Cannot abort from current state: \(self)")
255+
throw Failure.invalidStateTransition(reason: "Cannot abort upload: no upload ID available")
256256
}
257257
case .aborted(let uploadId, let error):
258258
switch self {
259259
case .created, .parts, .aborting:
260260
self = .aborted(uploadId: uploadId, error: error)
261261
default:
262-
throw Failure.invalidStateTransition(reason: "Cannot abort from current state: \(self)")
262+
throw Failure.invalidStateTransition(reason: "Cannot abort upload: upload must be in progress or created")
263263
}
264264
case .failed(let uploadId, let error):
265265
switch self {
@@ -268,7 +268,7 @@ enum StorageMultipartUpload {
268268
case .parts(_, _, _, let parts):
269269
self = .failed(uploadId: uploadId, parts: parts, error: error)
270270
default:
271-
throw Failure.invalidStateTransition(reason: "Cannot fail from current state: \(self)")
271+
throw Failure.invalidStateTransition(reason: "Cannot fail upload: invalid state for failure")
272272
}
273273
}
274274
}
@@ -277,7 +277,7 @@ enum StorageMultipartUpload {
277277
mutating func transition(uploadPartEvent: StorageUploadPartEvent) throws {
278278
guard !isAborting, !isAborted else { return }
279279
guard case .parts(let uploadId, let uploadFile, let partSize, var parts) = self else {
280-
throw Failure.invalidStateTransition(reason: "Parts are required for this transition: \(uploadPartEvent)")
280+
throw Failure.invalidStateTransition(reason: "Cannot process part event: upload must be in progress")
281281
}
282282

283283
let partNumber = uploadPartEvent.number
@@ -297,12 +297,12 @@ enum StorageMultipartUpload {
297297
parts[index] = .inProgress(bytes: part.bytes, bytesTransferred: 0, taskIdentifier: taskIdentifier)
298298
case .progressUpdated(_, let bytesTransferred, _):
299299
guard case .inProgress(let bytes, _, let taskIdentifier) = part else {
300-
throw Failure.invalidStateTransition(reason: "Part cannot update progress in current state: \(self)")
300+
throw Failure.invalidStateTransition(reason: "Cannot update progress: part must be in progress")
301301
}
302302
parts[index] = .inProgress(bytes: bytes, bytesTransferred: bytesTransferred, taskIdentifier: taskIdentifier)
303303
case .completed(_, let eTag, _):
304304
guard case .inProgress(let bytes, _, _) = part else {
305-
throw Failure.invalidStateTransition(reason: "Part cannot be completed in current state: \(self)")
305+
throw Failure.invalidStateTransition(reason: "Cannot complete part: part must be in progress")
306306
}
307307
parts[index] = StorageUploadPart.completed(bytes: bytes, eTag: eTag)
308308
case .failed:

0 commit comments

Comments
 (0)