From 13d7e22ddf036debce38cce8142ab59da181b4a7 Mon Sep 17 00:00:00 2001 From: arunma Date: Fri, 14 Jun 2024 15:11:20 +0800 Subject: [PATCH 1/5] fix(cdb): [116078583]If the id is empty, try again with the same clienttoken --- tencentcloud/services/cdb/resource_tc_mysql_instance.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tencentcloud/services/cdb/resource_tc_mysql_instance.go b/tencentcloud/services/cdb/resource_tc_mysql_instance.go index 886e269cb8..9096b586d7 100644 --- a/tencentcloud/services/cdb/resource_tc_mysql_instance.go +++ b/tencentcloud/services/cdb/resource_tc_mysql_instance.go @@ -570,8 +570,6 @@ func mysqlCreateInstancePayByMonth(ctx context.Context, d *schema.ResourceData, var response *cdb.CreateDBInstanceResponse err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { // shadowed response will not pass to outside - clientToken := helper.BuildToken() - request.ClientToken = &clientToken r, inErr := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMysqlClient().CreateDBInstance(request) if inErr != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -581,7 +579,7 @@ func mysqlCreateInstancePayByMonth(ctx context.Context, d *schema.ResourceData, return tccommon.RetryError(inErr) } - if r.Response.InstanceIds == nil && clientToken != "" { + if len(response.Response.InstanceIds) < 1 && clientToken != "" { return resource.RetryableError(fmt.Errorf("%s returns nil instanceIds but client token provided, retrying", request.GetAction())) } @@ -623,13 +621,11 @@ func mysqlCreateInstancePayByUse(ctx context.Context, d *schema.ResourceData, me var response *cdb.CreateDBInstanceHourResponse err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { // shadowed response will not pass to outside - clientToken := helper.BuildToken() - request.ClientToken = &clientToken r, inErr := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMysqlClient().CreateDBInstanceHour(request) if inErr != nil { return tccommon.RetryError(inErr) } - if r.Response.InstanceIds == nil && clientToken != "" { + if len(response.Response.InstanceIds) < 1 && clientToken != "" { return resource.RetryableError(fmt.Errorf("%s returns nil instanceIds but client token provided, retrying", request.GetAction())) } response = r From 0da937e5b0ba86c3b8e1731c150ff53f1720b52b Mon Sep 17 00:00:00 2001 From: arunma Date: Fri, 14 Jun 2024 16:06:11 +0800 Subject: [PATCH 2/5] fix:modify timeout --- tencentcloud/services/cdb/resource_tc_mysql_instance.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/cdb/resource_tc_mysql_instance.go b/tencentcloud/services/cdb/resource_tc_mysql_instance.go index 9096b586d7..da24f2eb47 100644 --- a/tencentcloud/services/cdb/resource_tc_mysql_instance.go +++ b/tencentcloud/services/cdb/resource_tc_mysql_instance.go @@ -568,7 +568,7 @@ func mysqlCreateInstancePayByMonth(ctx context.Context, d *schema.ResourceData, } var response *cdb.CreateDBInstanceResponse - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + err := resource.Retry(2*tccommon.WriteRetryTimeout, func() *resource.RetryError { // shadowed response will not pass to outside r, inErr := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMysqlClient().CreateDBInstance(request) if inErr != nil { @@ -619,7 +619,7 @@ func mysqlCreateInstancePayByUse(ctx context.Context, d *schema.ResourceData, me } var response *cdb.CreateDBInstanceHourResponse - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + err := resource.Retry(2*tccommon.WriteRetryTimeout, func() *resource.RetryError { // shadowed response will not pass to outside r, inErr := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMysqlClient().CreateDBInstanceHour(request) if inErr != nil { From f77dbb60fa415bd34fb36bb80992eacde27f4380 Mon Sep 17 00:00:00 2001 From: arunma Date: Fri, 14 Jun 2024 16:26:20 +0800 Subject: [PATCH 3/5] fix: modify id --- tencentcloud/services/cdb/resource_tc_mysql_instance.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/cdb/resource_tc_mysql_instance.go b/tencentcloud/services/cdb/resource_tc_mysql_instance.go index da24f2eb47..f81a1b5094 100644 --- a/tencentcloud/services/cdb/resource_tc_mysql_instance.go +++ b/tencentcloud/services/cdb/resource_tc_mysql_instance.go @@ -579,7 +579,7 @@ func mysqlCreateInstancePayByMonth(ctx context.Context, d *schema.ResourceData, return tccommon.RetryError(inErr) } - if len(response.Response.InstanceIds) < 1 && clientToken != "" { + if len(r.Response.InstanceIds) < 1 && clientToken != "" { return resource.RetryableError(fmt.Errorf("%s returns nil instanceIds but client token provided, retrying", request.GetAction())) } @@ -625,7 +625,7 @@ func mysqlCreateInstancePayByUse(ctx context.Context, d *schema.ResourceData, me if inErr != nil { return tccommon.RetryError(inErr) } - if len(response.Response.InstanceIds) < 1 && clientToken != "" { + if len(r.Response.InstanceIds) < 1 && clientToken != "" { return resource.RetryableError(fmt.Errorf("%s returns nil instanceIds but client token provided, retrying", request.GetAction())) } response = r From 1ad25ce6430765728c96c7b3ecdbd0063044eff9 Mon Sep 17 00:00:00 2001 From: arunma Date: Fri, 14 Jun 2024 17:39:08 +0800 Subject: [PATCH 4/5] feat: add chengelog --- .changelog/2684.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/2684.txt diff --git a/.changelog/2684.txt b/.changelog/2684.txt new file mode 100644 index 0000000000..accf0c6b49 --- /dev/null +++ b/.changelog/2684.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/tencentcloud_mysql_instance: If the id is empty, retry with the same clienttoken for 10 minutes +``` From 84abaa682678016cb9562e9dcd16c0a333eca596 Mon Sep 17 00:00:00 2001 From: arunma Date: Fri, 14 Jun 2024 19:33:52 +0800 Subject: [PATCH 5/5] fix: modify delete' --- tencentcloud/services/cdb/resource_tc_mysql_instance.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/services/cdb/resource_tc_mysql_instance.go b/tencentcloud/services/cdb/resource_tc_mysql_instance.go index f81a1b5094..4516d39915 100644 --- a/tencentcloud/services/cdb/resource_tc_mysql_instance.go +++ b/tencentcloud/services/cdb/resource_tc_mysql_instance.go @@ -1604,7 +1604,7 @@ func resourceTencentCloudMysqlInstanceDelete(d *schema.ResourceData, meta interf return resource.NonRetryableError(err) } } - if mysqlInfo == nil { + if mysqlInfo == nil || *mysqlInfo.Status == 6 { return nil } else { if mysqlInfo.RoGroups != nil && len(mysqlInfo.RoGroups) > 0 {