Skip to content

Commit de215f4

Browse files
committed
更新0.7.4,优化上传域名熔断策略,当全部域名都被冻结后,立即随机选择一个域名返回,不抛出异常
1 parent a8afef5 commit de215f4

File tree

8 files changed

+30
-14
lines changed

8 files changed

+30
-14
lines changed

base/lib/src/storage/config/config.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:platform_info/platform_info.dart';
88
import 'package:qiniu_sdk_base/src/storage/storage.dart';
99
import 'package:qiniu_sdk_base/src/util/cache_provider_base.dart'
1010
as cache_provider;
11+
import 'package:qiniu_sdk_base/src/util/random.dart';
1112
import 'package:singleflight/singleflight.dart' as singleflight;
1213
import 'package:path/path.dart' show join;
1314

base/lib/src/storage/config/host.dart

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ class DefaultHostProvider extends HostFreezer {
112112
return '$protocol://${availableDomain.value}';
113113
}
114114
}
115-
_throwNoAvailableHostError();
115+
// 全都不可用了,随机选择一个域名返回
116+
return '$protocol://${upDomains.mustGetRandomElement()}';
116117
}
117118
}
118119

@@ -201,7 +202,15 @@ class DefaultHostProviderV2 extends HostFreezer {
201202
return unfrozenDomain;
202203
}
203204
}
204-
_throwNoAvailableHostError();
205+
206+
print("全都不可用了,随机选择一个域名返回");
207+
// 全都不可用了,随机选择一个域名返回
208+
return regions
209+
.mustGetRandomElement()
210+
.up
211+
.map((domain) => _makeHost(domain, useHttps: _useHttps))
212+
.toList()
213+
.mustGetRandomElement();
205214
}
206215

207216
Future<BucketRegionsQuery> get query => _getQuery();
@@ -276,13 +285,6 @@ void _checkResponse(Response response) {
276285
}
277286
}
278287

279-
Never _throwNoAvailableHostError() {
280-
throw StorageError(
281-
type: StorageErrorType.NO_AVAILABLE_HOST,
282-
message: '没有可用的上传域名',
283-
);
284-
}
285-
286288
Never _throwNoAvailableRegionError() {
287289
throw StorageError(
288290
type: StorageErrorType.NO_AVAILABLE_REGION,

base/lib/src/util/random.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import 'dart:math';
2+
3+
final random = Random();
4+
5+
extension ListRandomSelect<T> on List<T> {
6+
T mustGetRandomElement() {
7+
return elementAt(random.nextInt(length));
8+
}
9+
}

base/lib/src/version.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import 'package:version/version.dart';
22

3-
final Version currentVersion = Version.parse('0.7.3');
3+
final Version currentVersion = Version.parse('0.7.4');

base/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: qiniu_sdk_base
2-
version: 0.7.3
2+
version: 0.7.4
33
homepage: https://github.com/qiniu/dart-sdk
44
description: The sdk basic of Qiniu products
55

flutter/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.7.4
2+
3+
* 优化上传域名熔断策略,当全部域名都被冻结后,立即随机选择一个域名返回,不抛出异常
4+
15
## 0.7.3
26

37
* 优化表单上传进度更新粒度

flutter/lib/src/version.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import 'package:version/version.dart';
22

33
/// 当前SDK版本号
4-
final Version currentVersion = Version.parse('0.7.3');
4+
final Version currentVersion = Version.parse('0.7.4');

flutter/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: qiniu_flutter_sdk
22
description: Qiniu Flutter sdk
3-
version: 0.7.3
3+
version: 0.7.4
44
homepage: https://github.com/qiniu/dart-sdk/tree/master/flutter
55

66
environment:
@@ -11,7 +11,7 @@ dependencies:
1111
device_info_plus: ^11.3.0
1212
flutter:
1313
sdk: flutter
14-
qiniu_sdk_base: ^0.7.3
14+
qiniu_sdk_base: ^0.7.4
1515
version: ^3.0.2
1616

1717
dev_dependencies:

0 commit comments

Comments
 (0)