File tree Expand file tree Collapse file tree 8 files changed +30
-14
lines changed Expand file tree Collapse file tree 8 files changed +30
-14
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ import 'package:platform_info/platform_info.dart';
88import 'package:qiniu_sdk_base/src/storage/storage.dart' ;
99import 'package:qiniu_sdk_base/src/util/cache_provider_base.dart'
1010 as cache_provider;
11+ import 'package:qiniu_sdk_base/src/util/random.dart' ;
1112import 'package:singleflight/singleflight.dart' as singleflight;
1213import 'package:path/path.dart' show join;
1314
Original file line number Diff line number Diff 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-
286288Never _throwNoAvailableRegionError () {
287289 throw StorageError (
288290 type: StorageErrorType .NO_AVAILABLE_REGION ,
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 11import 'package:version/version.dart' ;
22
3- final Version currentVersion = Version .parse ('0.7.3 ' );
3+ final Version currentVersion = Version .parse ('0.7.4 ' );
Original file line number Diff line number Diff line change 11name : qiniu_sdk_base
2- version : 0.7.3
2+ version : 0.7.4
33homepage : https://github.com/qiniu/dart-sdk
44description : The sdk basic of Qiniu products
55
Original file line number Diff line number Diff line change 1+ ## 0.7.4
2+
3+ * 优化上传域名熔断策略,当全部域名都被冻结后,立即随机选择一个域名返回,不抛出异常
4+
15## 0.7.3
26
37* 优化表单上传进度更新粒度
Original file line number Diff line number Diff line change 11import '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 ' );
Original file line number Diff line number Diff line change 11name : qiniu_flutter_sdk
22description : Qiniu Flutter sdk
3- version : 0.7.3
3+ version : 0.7.4
44homepage : https://github.com/qiniu/dart-sdk/tree/master/flutter
55
66environment :
@@ -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
1717dev_dependencies :
You can’t perform that action at this time.
0 commit comments