@@ -961,6 +961,7 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{}
961961 cvmService := CvmService {
962962 client : meta .(* TencentCloudClient ).apiV3Conn ,
963963 }
964+
964965 err := resource .Retry (writeRetryTimeout , func () * resource.RetryError {
965966 errRet := cvmService .DeleteInstance (ctx , instanceId )
966967 if errRet != nil {
@@ -976,7 +977,7 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{}
976977 notExist := false
977978
978979 //check exist
979- err = resource .Retry (2 * readRetryTimeout , func () * resource.RetryError {
980+ err = resource .Retry (5 * readRetryTimeout , func () * resource.RetryError {
980981 instance , errRet := cvmService .DescribeInstanceById (ctx , instanceId )
981982 if errRet != nil {
982983 return retryError (errRet , InternalError )
@@ -985,13 +986,12 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{}
985986 notExist = true
986987 return nil
987988 }
988- if * instance .InstanceState == CVM_STATUS_SHUTDOWN {
989+ if * instance .InstanceState == CVM_STATUS_SHUTDOWN && * instance . LatestOperationState != CVM_LATEST_OPERATION_STATE_OPERATING {
989990 //in recycling
990991 return nil
991992 }
992993 return resource .RetryableError (fmt .Errorf ("cvm instance status is %s, retry..." , * instance .InstanceState ))
993994 })
994-
995995 if err != nil {
996996 return err
997997 }
@@ -1000,9 +1000,7 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{}
10001000 return nil
10011001 }
10021002
1003- //exist in recycle
1004-
1005- //delete again
1003+ // exist in recycle, delete again
10061004 err = resource .Retry (writeRetryTimeout , func () * resource.RetryError {
10071005 errRet := cvmService .DeleteInstance (ctx , instanceId )
10081006 //when state is terminating, do not delete but check exist
@@ -1024,7 +1022,7 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{}
10241022 }
10251023
10261024 //describe and check not exist
1027- err = resource .Retry (2 * readRetryTimeout , func () * resource.RetryError {
1025+ err = resource .Retry (5 * readRetryTimeout , func () * resource.RetryError {
10281026 instance , errRet := cvmService .DescribeInstanceById (ctx , instanceId )
10291027 if errRet != nil {
10301028 return retryError (errRet , InternalError )
@@ -1034,10 +1032,9 @@ func resourceTencentCloudInstanceDelete(d *schema.ResourceData, meta interface{}
10341032 }
10351033 return resource .RetryableError (fmt .Errorf ("cvm instance status is %s, retry..." , * instance .InstanceState ))
10361034 })
1037-
10381035 if err != nil {
10391036 return err
10401037 }
1041- return nil
10421038
1039+ return nil
10431040}
0 commit comments