From cb2559ff4025048d82518862528f555c810e7693 Mon Sep 17 00:00:00 2001 From: Yegor Yarko Date: Thu, 2 Dec 2021 19:07:54 +0100 Subject: [PATCH 1/3] Drop lockedCandidatesForBatch as a fix for #3341 --- packages/@uppy/aws-s3-multipart/src/MultipartUploader.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js b/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js index a5cbd1274e..05743740d1 100644 --- a/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js +++ b/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js @@ -58,7 +58,6 @@ class MultipartUploader { this.partsInProgress = 0 this.chunks = null this.chunkState = null - this.lockedCandidatesForBatch = [] this.#initChunks() @@ -181,8 +180,6 @@ class MultipartUploader { const candidates = [] for (let i = 0; i < this.chunkState.length; i++) { - // eslint-disable-next-line no-continue - if (this.lockedCandidatesForBatch.includes(i)) continue const state = this.chunkState[i] // eslint-disable-next-line no-continue if (state.done || state.busy) continue @@ -242,8 +239,6 @@ class MultipartUploader { } async #prepareUploadParts (candidates) { - this.lockedCandidatesForBatch.push(...candidates) - const result = await this.#retryable({ attempt: () => this.options.prepareUploadParts({ key: this.key, From cdc0c5aa83ca434f419532dfe9e31aaad5425429 Mon Sep 17 00:00:00 2001 From: Yegor Yarko Date: Mon, 6 Dec 2021 14:39:23 +0100 Subject: [PATCH 2/3] Mark upload chunk as busy just before preparing upload part to ensure proper selection of the next chunks to upload This ensures that the chunk will not be selected as next upload candidate until it is aborted. --- packages/@uppy/aws-s3-multipart/src/MultipartUploader.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js b/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js index 05743740d1..983c8a76a0 100644 --- a/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js +++ b/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js @@ -239,6 +239,8 @@ class MultipartUploader { } async #prepareUploadParts (candidates) { + candidates.forEach(i => this.chunkState[i].busy = true) + const result = await this.#retryable({ attempt: () => this.options.prepareUploadParts({ key: this.key, From 4b6bfd5025a320bd1fb96bdce193402a071a9d66 Mon Sep 17 00:00:00 2001 From: Yegor Yarko Date: Mon, 6 Dec 2021 15:58:09 +0100 Subject: [PATCH 3/3] Make linter happy --- packages/@uppy/aws-s3-multipart/src/MultipartUploader.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js b/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js index 983c8a76a0..8d68b48799 100644 --- a/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js +++ b/packages/@uppy/aws-s3-multipart/src/MultipartUploader.js @@ -239,8 +239,10 @@ class MultipartUploader { } async #prepareUploadParts (candidates) { - candidates.forEach(i => this.chunkState[i].busy = true) - + candidates.forEach((i) => { + this.chunkState[i].busy = true + }) + const result = await this.#retryable({ attempt: () => this.options.prepareUploadParts({ key: this.key,