@@ -94,7 +94,6 @@ type AlibabacloudStackClient struct {
94
94
bssopenapiconn * bssopenapi.Client
95
95
rdsconn * rds.Client
96
96
ramconn * ram.Client
97
- essconn * ess.Client
98
97
gpdbconn * gpdb.Client
99
98
drdsconn * drds.Client
100
99
elasticsearchconn * elasticsearch.Client
@@ -275,16 +274,16 @@ func (client *AlibabacloudStackClient) WithCloudApiClient(do func(*cloudapi.Clie
275
274
}
276
275
277
276
func (client * AlibabacloudStackClient ) WithEssClient (do func (* ess.Client ) (interface {}, error )) (interface {}, error ) {
278
- if client .essconn == nil {
279
- conn , error := client .WithProductSDKClient (ESSCode )
280
- if error != nil {
281
- return nil , error
282
- }
283
- client .essconn = & ess.Client {
284
- Client : * conn ,
285
- }
277
+ conn , err := client .getConnectClient ("ESS" )
278
+ if err != nil {
279
+ return nil , err
280
+ }
281
+ essconn := & ess.Client {
282
+ Client : * conn ,
286
283
}
287
- return do (client .essconn )
284
+ return retryDo (func () (interface {}, error ) {
285
+ return do (essconn )
286
+ })
288
287
}
289
288
290
289
func (client * AlibabacloudStackClient ) WithOnsClient (do func (* ons.Client ) (interface {}, error )) (interface {}, error ) {
@@ -1396,3 +1395,23 @@ func SetResourceData(d *schema.ResourceData, value interface{}, keys ...string)
1396
1395
}
1397
1396
return nil
1398
1397
}
1398
+
1399
+ func retryDo (do func () (interface {}, error )) (interface {}, error ) {
1400
+ var response interface {}
1401
+ var err error
1402
+ wait := IncrementalWait (3 * time .Second , 3 * time .Second )
1403
+ resource .Retry (5 * time .Minute , func () * resource.RetryError {
1404
+ //仅在请求无正常返回时重试
1405
+ response , err = do ()
1406
+ if err == nil {
1407
+ return nil
1408
+ }
1409
+ if response == nil {
1410
+ wait ()
1411
+ return resource .RetryableError (err )
1412
+ }
1413
+ return resource .NonRetryableError (err )
1414
+
1415
+ })
1416
+ return response , err
1417
+ }
0 commit comments