Skip to content

Commit 2a77373

Browse files
tongyimingmikatong
and
mikatong
authored
fix rate limit (#3301)
Co-authored-by: mikatong <[email protected]>
1 parent 0b56fcb commit 2a77373

File tree

2 files changed

+62
-32
lines changed

2 files changed

+62
-32
lines changed

tencentcloud/services/cls/resource_tc_cls_index_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package cls_test
22

33
import (
44
"testing"
5+
"time"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
79

810
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
911
)
@@ -35,6 +37,10 @@ func TestAccTencentCloudClsIndex_basic(t *testing.T) {
3537
resource.TestCheckResourceAttrSet("tencentcloud_cls_index.example", "topic_id"),
3638
resource.TestCheckResourceAttr("tencentcloud_cls_index.example", "status", "true"),
3739
resource.TestCheckResourceAttr("tencentcloud_cls_index.example", "include_internal_fields", "true"),
40+
func(s *terraform.State) error {
41+
time.Sleep(1 * time.Minute)
42+
return nil
43+
},
3844
),
3945
},
4046
},

tencentcloud/services/cls/service_tencentcloud_cls.go

Lines changed: 56 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -45,42 +45,50 @@ func (me *ClsService) DescribeClsLogset(ctx context.Context, logsetId string) (l
4545
Values: []*string{&logsetId},
4646
},
4747
)
48-
ratelimit.Check(request.GetAction())
4948

5049
var offset int64 = 0
5150
var pageSize int64 = 100
5251
instances := make([]*cls.LogsetInfo, 0)
5352
var iacExtInfo connectivity.IacExtInfo
5453
iacExtInfo.InstanceId = logsetId
5554

56-
for {
57-
request.Offset = &offset
58-
request.Limit = &pageSize
55+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
5956
ratelimit.Check(request.GetAction())
60-
response, err := me.client.UseClsClient(iacExtInfo).DescribeLogsets(request)
61-
if err != nil {
62-
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
63-
logId, request.GetAction(), request.ToJsonString(), err.Error())
64-
errRet = err
65-
return
66-
}
67-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
68-
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
57+
for {
58+
request.Offset = &offset
59+
request.Limit = &pageSize
60+
ratelimit.Check(request.GetAction())
61+
response, e := me.client.UseClsClient(iacExtInfo).DescribeLogsets(request)
62+
if e != nil {
63+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
64+
logId, request.GetAction(), request.ToJsonString(), e.Error())
65+
errRet = e
66+
return tccommon.RetryError(e)
67+
}
68+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
69+
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
6970

70-
if response == nil || len(response.Response.Logsets) < 1 {
71-
break
71+
if response == nil || len(response.Response.Logsets) < 1 {
72+
break
73+
}
74+
instances = append(instances, response.Response.Logsets...)
75+
if len(response.Response.Logsets) < int(pageSize) {
76+
break
77+
}
78+
offset += pageSize
7279
}
73-
instances = append(instances, response.Response.Logsets...)
74-
if len(response.Response.Logsets) < int(pageSize) {
75-
break
80+
81+
if len(instances) < 1 {
82+
return nil
7683
}
77-
offset += pageSize
78-
}
84+
logset = instances[0]
85+
return nil
86+
})
7987

80-
if len(instances) < 1 {
88+
if err != nil {
89+
errRet = err
8190
return
8291
}
83-
logset = instances[0]
8492

8593
return
8694

@@ -294,14 +302,22 @@ func (me *ClsService) DeleteClsTopic(ctx context.Context, id string) (errRet err
294302
}
295303
}()
296304

297-
ratelimit.Check(request.GetAction())
298-
response, err := me.client.UseClsClient().DeleteTopic(request)
305+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
306+
ratelimit.Check(request.GetAction())
307+
response, e := me.client.UseClsClient().DeleteTopic(request)
308+
if e != nil {
309+
return tccommon.RetryError(e)
310+
} else {
311+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
312+
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
313+
}
314+
315+
return nil
316+
})
317+
299318
if err != nil {
300-
errRet = err
301319
return err
302320
}
303-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
304-
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
305321

306322
return
307323
}
@@ -774,14 +790,22 @@ func (me *ClsService) DeleteClsIndex(ctx context.Context, id string) (errRet err
774790
}
775791
}()
776792

777-
ratelimit.Check(request.GetAction())
778-
response, err := me.client.UseClsClient().DeleteIndex(request)
793+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
794+
ratelimit.Check(request.GetAction())
795+
response, e := me.client.UseClsClient().DeleteIndex(request)
796+
if e != nil {
797+
return tccommon.RetryError(e)
798+
} else {
799+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
800+
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
801+
}
802+
803+
return nil
804+
})
805+
779806
if err != nil {
780-
errRet = err
781807
return err
782808
}
783-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
784-
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
785809

786810
return
787811
}

0 commit comments

Comments
 (0)