Skip to content

Commit 0bf5c5f

Browse files
committedJan 4, 2025
通用重试逻辑,当请求无返回时自动重试
1 parent 076822b commit 0bf5c5f

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed
 

‎alibabacloudstack/connectivity/client.go

+29-10
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ type AlibabacloudStackClient struct {
9494
bssopenapiconn *bssopenapi.Client
9595
rdsconn *rds.Client
9696
ramconn *ram.Client
97-
essconn *ess.Client
9897
gpdbconn *gpdb.Client
9998
drdsconn *drds.Client
10099
elasticsearchconn *elasticsearch.Client
@@ -275,16 +274,16 @@ func (client *AlibabacloudStackClient) WithCloudApiClient(do func(*cloudapi.Clie
275274
}
276275

277276
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,
286283
}
287-
return do(client.essconn)
284+
return retryDo(func() (interface{}, error) {
285+
return do(essconn)
286+
})
288287
}
289288

290289
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)
13961395
}
13971396
return nil
13981397
}
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

Comments
 (0)