Skip to content

Commit f2f74df

Browse files
committed
fix: merge dev/retry
1 parent 45ee08e commit f2f74df

File tree

5 files changed

+219
-11
lines changed

5 files changed

+219
-11
lines changed

dist/cos-js-sdk-v5.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3930,7 +3930,7 @@ module.exports = function(module) {
39303930
/*! exports provided: name, version, description, main, types, scripts, repository, keywords, author, license, bugs, homepage, dependencies, devDependencies, default */
39313931
/***/ (function(module) {
39323932

3933-
module.exports = JSON.parse("{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.9.1-beta.0\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js lib/request.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\",\"postinstall\":\"npx patch-package\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"fast-xml-parser\":\"4.5.0\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"29.7.0\",\"jest-environment-jsdom\":\"29.7.0\",\"patch-package\":\"^8.0.0\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}");
3933+
module.exports = JSON.parse("{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.10.0\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js lib/request.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\",\"postinstall\":\"npx patch-package\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"fast-xml-parser\":\"4.5.0\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"29.7.0\",\"jest-environment-jsdom\":\"29.7.0\",\"patch-package\":\"^8.0.0\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}");
39343934

39353935
/***/ }),
39363936

@@ -9149,10 +9149,14 @@ function allowRetry(err) {
91499149
}
91509150
} else if (Math.floor(err.statusCode / 100) === 5) {
91519151
canRetry = true;
9152+
networkError = false;
9153+
} else if (err.message === 'timeout') {
9154+
canRetry = true;
9155+
networkError = self.options.AutoSwitchHost;
91529156
} else if (err.message === 'CORS blocked or network error') {
91539157
// 跨域/网络错误都包含在内
9154-
networkError = true;
9155-
canRetry = self.options.AutoSwitchHost;
9158+
canRetry = true;
9159+
networkError = self.options.AutoSwitchHost;
91569160
}
91579161
}
91589162
return {
@@ -9285,7 +9289,7 @@ function submitRequest(params, callback) {
92859289
msg: "\u8BF7\u6C42\u5931\u8D25, err=".concat(JSON.stringify(err), ", canRetry=").concat(canRetry, ", networkError=").concat(networkError, ", tryTimes=").concat(tryTimes)
92869290
});
92879291
}
9288-
if (err && tryTimes < 2 && canRetry) {
9292+
if (err && tryTimes < 4 && canRetry) {
92899293
if (params.headers) {
92909294
delete params.headers.Authorization;
92919295
delete params.headers['token'];

dist/cos-js-sdk-v5.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-js-sdk-v5",
3-
"version": "1.9.1-beta.0",
3+
"version": "1.10.0",
44
"description": "JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)",
55
"main": "dist/cos-js-sdk-v5.js",
66
"types": "index.d.ts",

src/base.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3983,10 +3983,14 @@ function allowRetry(err) {
39833983
}
39843984
} else if (Math.floor(err.statusCode / 100) === 5) {
39853985
canRetry = true;
3986+
networkError = false;
3987+
} else if(err.message === 'timeout') {
3988+
canRetry = true;
3989+
networkError = self.options.AutoSwitchHost;
39863990
} else if (err.message === 'CORS blocked or network error') {
39873991
// 跨域/网络错误都包含在内
3988-
networkError = true;
3989-
canRetry = self.options.AutoSwitchHost;
3992+
canRetry = true;
3993+
networkError = self.options.AutoSwitchHost;
39903994
}
39913995
}
39923996
return { canRetry, networkError };
@@ -4094,7 +4098,7 @@ function submitRequest(params, callback) {
40944098
msg: `请求失败, err=${JSON.stringify(err)}, canRetry=${canRetry}, networkError=${networkError}, tryTimes=${tryTimes}`,
40954099
});
40964100
}
4097-
if (err && tryTimes < 2 && canRetry) {
4101+
if (err && tryTimes < 4 && canRetry) {
40984102
if (params.headers) {
40994103
delete params.headers.Authorization;
41004104
delete params.headers['token'];

test/test.js

Lines changed: 202 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
*/
44
import { describe, expect, jest, test } from '@jest/globals';
55
import COS from '../index.js';
6-
import Beacon from '../demo/common/beacon.min';
7-
import ClsClient from '../demo/common/cls.min';
6+
import Beacon from '../demo/common/beacon.min.js';
7+
import ClsClient from '../demo/common/cls.min.js';
88

99
// config 替换成自己的桶信息
1010
var config = {
@@ -6953,4 +6953,204 @@ group('EnableLog', function () {
69536953
}
69546954
);
69556955
});
6956+
});
6957+
group('retry myqcloud.com', function () {
6958+
const cos = new COS({
6959+
SecretId: config.SecretId,
6960+
SecretKey: config.SecretKey,
6961+
AutoSwitchHost: false,
6962+
Timeout: 10000,
6963+
});
6964+
const config = {
6965+
Bucket: 'cos-sdk-err-retry-1253960454',
6966+
Region: 'ap-chengdu',
6967+
};
6968+
function getObject(Key, done, expectErr) {
6969+
cos.getObject(
6970+
{
6971+
Bucket: config.Bucket,
6972+
Region: config.Region,
6973+
Key,
6974+
},
6975+
function (err, data) {
6976+
const isOk = expectErr ? err : !err;
6977+
console.log(`retry ${Key}---res`, err ? 'err' : 'success', isOk);
6978+
assert.ok(isOk);
6979+
done();
6980+
}
6981+
);
6982+
}
6983+
test('get 200', function (done) {
6984+
getObject('200', done);
6985+
});
6986+
test('get 200r', function (done) {
6987+
getObject('200r', done);
6988+
});
6989+
test('get 204', function (done) {
6990+
getObject('204', done);
6991+
});
6992+
test('get 204r', function (done) {
6993+
getObject('204r', done);
6994+
});
6995+
test('get 206', function (done) {
6996+
getObject('206', done);
6997+
});
6998+
test('get 206r', function (done) {
6999+
getObject('206r', done);
7000+
});
7001+
test('get 301', function (done) {
7002+
getObject('301', done);
7003+
});
7004+
test('get 301r', function (done) {
7005+
getObject('301r', done);
7006+
});
7007+
test('get 302', function (done) {
7008+
getObject('302', done);
7009+
});
7010+
test('get 302r', function (done) {
7011+
getObject('302r', done);
7012+
});
7013+
test('get 400', function (done) {
7014+
getObject('400', done, true);
7015+
});
7016+
test('get 400r', function (done) {
7017+
getObject('400r', done, true);
7018+
});
7019+
test('get 403', function (done) {
7020+
getObject('403', done, true);
7021+
});
7022+
test('get 403r', function (done) {
7023+
getObject('403r', done, true);
7024+
});
7025+
test('get 404', function (done) {
7026+
getObject('404', done, true);
7027+
});
7028+
test('get 404r', function (done) {
7029+
getObject('404r', done, true);
7030+
});
7031+
test('get 500', function (done) {
7032+
getObject('500', done);
7033+
});
7034+
test('get 500r', function (done) {
7035+
getObject('500r', done);
7036+
});
7037+
test('get 503', function (done) {
7038+
getObject('503', done);
7039+
});
7040+
test('get 503r', function (done) {
7041+
getObject('503r', done);
7042+
});
7043+
test('get 504', function (done) {
7044+
getObject('504', done);
7045+
});
7046+
test('get 504r', function (done) {
7047+
getObject('504r', done);
7048+
});
7049+
test('get shutdown', function (done) {
7050+
getObject('shutdown', done);
7051+
});
7052+
test('get timeout', function (done) {
7053+
getObject('timeout', done);
7054+
});
7055+
});
7056+
7057+
group('retry tencentcos.cn', function () {
7058+
const cos = new COS({
7059+
SecretId: config.SecretId,
7060+
SecretKey: config.SecretKey,
7061+
AutoSwitchHost: false,
7062+
Timeout: 10000,
7063+
Domain: '{Bucket}.cos.{Region}.tencentcos.cn',
7064+
});
7065+
const config = {
7066+
Bucket: 'cos-sdk-err-retry-1253960454',
7067+
Region: 'ap-chengdu',
7068+
};
7069+
function getObject(Key, done, expectErr) {
7070+
cos.getObject(
7071+
{
7072+
Bucket: config.Bucket,
7073+
Region: config.Region,
7074+
Key,
7075+
},
7076+
function (err, data) {
7077+
const isOk = expectErr ? err : !err;
7078+
console.log(`retry ${Key}---res`, err ? 'err' : 'success', isOk);
7079+
assert.ok(isOk);
7080+
done();
7081+
}
7082+
);
7083+
}
7084+
test('get 200', function (done) {
7085+
getObject('200', done);
7086+
});
7087+
test('get 200r', function (done) {
7088+
getObject('200r', done);
7089+
});
7090+
test('get 204', function (done) {
7091+
getObject('204', done);
7092+
});
7093+
test('get 204r', function (done) {
7094+
getObject('204r', done);
7095+
});
7096+
test('get 206', function (done) {
7097+
getObject('206', done);
7098+
});
7099+
test('get 206r', function (done) {
7100+
getObject('206r', done);
7101+
});
7102+
test('get 301', function (done) {
7103+
getObject('301', done);
7104+
});
7105+
test('get 301r', function (done) {
7106+
getObject('301r', done);
7107+
});
7108+
test('get 302', function (done) {
7109+
getObject('302', done);
7110+
});
7111+
test('get 302r', function (done) {
7112+
getObject('302r', done);
7113+
});
7114+
test('get 400', function (done) {
7115+
getObject('400', done, true);
7116+
});
7117+
test('get 400r', function (done) {
7118+
getObject('400r', done, true);
7119+
});
7120+
test('get 403', function (done) {
7121+
getObject('403', done, true);
7122+
});
7123+
test('get 403r', function (done) {
7124+
getObject('403r', done, true);
7125+
});
7126+
test('get 404', function (done) {
7127+
getObject('404', done, true);
7128+
});
7129+
test('get 404r', function (done) {
7130+
getObject('404r', done, true);
7131+
});
7132+
test('get 500', function (done) {
7133+
getObject('500', done);
7134+
});
7135+
test('get 500r', function (done) {
7136+
getObject('500r', done);
7137+
});
7138+
test('get 503', function (done) {
7139+
getObject('503', done);
7140+
});
7141+
test('get 503r', function (done) {
7142+
getObject('503r', done);
7143+
});
7144+
test('get 504', function (done) {
7145+
getObject('504', done);
7146+
});
7147+
test('get 504r', function (done) {
7148+
getObject('504r', done);
7149+
});
7150+
test('get shutdown', function (done) {
7151+
getObject('shutdown', done);
7152+
});
7153+
test('get timeout', function (done) {
7154+
getObject('timeout', done);
7155+
});
69567156
});

0 commit comments

Comments
 (0)