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 +``` diff --git a/tencentcloud/services/cdb/resource_tc_mysql_instance.go b/tencentcloud/services/cdb/resource_tc_mysql_instance.go index 886e269cb8..4516d39915 100644 --- a/tencentcloud/services/cdb/resource_tc_mysql_instance.go +++ b/tencentcloud/services/cdb/resource_tc_mysql_instance.go @@ -568,10 +568,8 @@ 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 - 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(r.Response.InstanceIds) < 1 && clientToken != "" { return resource.RetryableError(fmt.Errorf("%s returns nil instanceIds but client token provided, retrying", request.GetAction())) } @@ -621,15 +619,13 @@ 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 - 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(r.Response.InstanceIds) < 1 && clientToken != "" { return resource.RetryableError(fmt.Errorf("%s returns nil instanceIds but client token provided, retrying", request.GetAction())) } response = r @@ -1608,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 {