From 410ed00ab188414a16c585b5fb306137e43e5125 Mon Sep 17 00:00:00 2001 From: hellertang Date: Tue, 11 Jan 2022 15:59:53 +0800 Subject: [PATCH 1/3] add timeout env --- tencentcloud/common.go | 23 +++++++++++++++++++++-- tencentcloud/resource_tc_vpc.go | 4 ++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tencentcloud/common.go b/tencentcloud/common.go index 6dd61f485c..b9355eecb6 100644 --- a/tencentcloud/common.go +++ b/tencentcloud/common.go @@ -9,6 +9,7 @@ import ( "os" "os/user" "reflect" + "strconv" "strings" "sync/atomic" "time" @@ -27,14 +28,23 @@ type contextLogId string const logIdKey = contextLogId("logId") +const ( + PROVIDER_READ_RETRY_TIMEOUT = "TENCENTCLOUD_READ_RETRY_TIMEOUT" + PROVIDER_WRITE_RETRY_TIMEOUT = "TENCENTCLOUD_WRITE_RETRY_TIMEOUT" +) + var logFirstTime = "" var logAtomicId int64 = 0 // readRetryTimeout is read retry timeout -const readRetryTimeout = 3 * time.Minute +//const readRetryTimeout = 3 * time.Minute +var readRetry = getEnvDefault(PROVIDER_READ_RETRY_TIMEOUT, 3) +var readRetryTimeout = time.Duration(readRetry) * time.Minute // writeRetryTimeout is write retry timeout -const writeRetryTimeout = 5 * time.Minute +//const writeRetryTimeout = 5 * time.Minute +var writeRetry = getEnvDefault(PROVIDER_WRITE_RETRY_TIMEOUT, 5) +var writeRetryTimeout = time.Duration(writeRetry) * time.Minute // InternalError common internalError, do not add in retryableErrorCode, // because when some product return this error, retry won't fix anything. @@ -59,6 +69,15 @@ func init() { logFirstTime = fmt.Sprintf("%d", time.Now().UnixNano()/int64(time.Millisecond)) } +func getEnvDefault(key string, defVal int) int { + val, ex := os.LookupEnv(key) + if !ex { + return defVal + } + int, _ := strconv.Atoi(val) + return int +} + // getLogId get logId for trace, return a new logId if ctx is nil func getLogId(ctx context.Context) string { if ctx != nil { diff --git a/tencentcloud/resource_tc_vpc.go b/tencentcloud/resource_tc_vpc.go index e2d74fe1d9..610b8c07c3 100644 --- a/tencentcloud/resource_tc_vpc.go +++ b/tencentcloud/resource_tc_vpc.go @@ -208,6 +208,10 @@ func resourceTencentCloudVpcInstanceRead(d *schema.ResourceData, meta interface{ service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} id := d.Id() + log.Printf("==============timeout") + log.Print(readRetryTimeout) + log.Print(writeRetryTimeout) + log.Printf("==============timeout") err := resource.Retry(readRetryTimeout, func() *resource.RetryError { info, has, e := service.DescribeVpc(ctx, id, "", "") if e != nil { From d45005a5bcc8827ff288fe02dd24fea74bb756e0 Mon Sep 17 00:00:00 2001 From: hellertang Date: Tue, 11 Jan 2022 16:54:30 +0800 Subject: [PATCH 2/3] remove debug info --- tencentcloud/resource_tc_vpc.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tencentcloud/resource_tc_vpc.go b/tencentcloud/resource_tc_vpc.go index 610b8c07c3..e2d74fe1d9 100644 --- a/tencentcloud/resource_tc_vpc.go +++ b/tencentcloud/resource_tc_vpc.go @@ -208,10 +208,6 @@ func resourceTencentCloudVpcInstanceRead(d *schema.ResourceData, meta interface{ service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} id := d.Id() - log.Printf("==============timeout") - log.Print(readRetryTimeout) - log.Print(writeRetryTimeout) - log.Printf("==============timeout") err := resource.Retry(readRetryTimeout, func() *resource.RetryError { info, has, e := service.DescribeVpc(ctx, id, "", "") if e != nil { From 5b74906a8d495cc5572b3ecf82060adadbb203ae Mon Sep 17 00:00:00 2001 From: hellertang Date: Tue, 11 Jan 2022 17:05:09 +0800 Subject: [PATCH 3/3] add panic --- tencentcloud/common.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tencentcloud/common.go b/tencentcloud/common.go index b9355eecb6..263cfa12e3 100644 --- a/tencentcloud/common.go +++ b/tencentcloud/common.go @@ -74,7 +74,10 @@ func getEnvDefault(key string, defVal int) int { if !ex { return defVal } - int, _ := strconv.Atoi(val) + int, err := strconv.Atoi(val) + if err != nil { + panic("TENCENTCLOUD_READ_RETRY_TIMEOUT or TENCENTCLOUD_WRITE_RETRY_TIMEOUT must be int.") + } return int }