Skip to content

Commit 12fcfd1

Browse files
authoredJul 26, 2022
feat: optimized multipartUpload progress close #1139 (#1141)
* feat: optimized multipartUpload progress close #1139 * feat: optimized multipartUpload progress close #1139 #1141 * feat: optimized multipartUpload progress * feat: optimized multipartUpload progress
1 parent 014ecba commit 12fcfd1

File tree

6 files changed

+200
-150
lines changed

6 files changed

+200
-150
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ package-lock.json
4343
/example/public/index.js
4444

4545
es
46+
.eslintcache

‎lib/browser/managed-upload.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ const mime = require('mime');
55
const copy = require('copy-to');
66
const { isBlob } = require('../common/utils/isBlob');
77
const { isFile } = require('../common/utils/isFile');
8-
const { isArray } = require('../common/utils/isArray');
98
const { isBuffer } = require('../common/utils/isBuffer');
10-
const { retry } = require('../common/utils/retry');
119

1210
const proto = exports;
1311

@@ -160,7 +158,7 @@ proto._resumeMultipart = async function _resumeMultipart(checkpoint, options) {
160158
});
161159

162160
if (options.progress) {
163-
await options.progress(doneParts.length / numParts, checkpoint, result.res);
161+
await options.progress(doneParts.length / (numParts + 1), checkpoint, result.res);
164162
}
165163

166164
resolve({

‎lib/common/multipart.js

+4
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,10 @@ proto.completeMultipartUpload = async function completeMultipartUpload(name, upl
205205
params.successStatuses = [200];
206206
const result = await this.request(params);
207207

208+
if (options.progress) {
209+
await options.progress(1, null, result.res);
210+
}
211+
208212
const ret = {
209213
res: result.res,
210214
bucket: params.bucket,

‎lib/managed-upload.js

+11-6
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ proto._resumeMultipart = async function _resumeMultipart(checkpoint, options) {
167167
checkpoint.doneParts = doneParts;
168168

169169
if (options.progress) {
170-
await options.progress(doneParts.length / numParts, checkpoint, result.res);
170+
await options.progress(doneParts.length / (numParts + 1), checkpoint, result.res);
171171
}
172172
}
173173
}
@@ -208,12 +208,17 @@ proto._resumeMultipart = async function _resumeMultipart(checkpoint, options) {
208208
}
209209
} else {
210210
// upload in parallel
211-
const jobErr = await this._parallel(todo, parallel,
211+
const jobErr = await this._parallel(
212+
todo,
213+
parallel,
212214
value => new Promise((resolve, reject) => {
213-
uploadPartJob(that, value).then(() => {
214-
resolve();
215-
}).catch(reject);
216-
}));
215+
uploadPartJob(that, value)
216+
.then(() => {
217+
resolve();
218+
})
219+
.catch(reject);
220+
})
221+
);
217222

218223
const abortEvent = jobErr.find(err => err.name === 'abort');
219224
if (abortEvent) throw abortEvent;

‎test/browser/browser.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1329,7 +1329,7 @@ describe('browser', () => {
13291329
});
13301330
sinon.restore();
13311331
assert.equal(result.res.status, 200);
1332-
assert.equal(progress, 12);
1332+
assert.equal(progress, 13);
13331333

13341334
const object = await store.get(name);
13351335
assert.equal(object.res.status, 200);
@@ -1362,7 +1362,7 @@ describe('browser', () => {
13621362
});
13631363
sinon.restore();
13641364
assert.equal(result.res.status, 200);
1365-
assert.equal(progress, 12);
1365+
assert.equal(progress, 13);
13661366

13671367
const object = await store.get(name);
13681368
assert.equal(object.res.status, 200);

‎test/node/multipart.test.js

+181-139
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.