Skip to content

Commit 3c4de5a

Browse files
authored
fix(cdb): [118876423] Optimize code logic (#2752)
* add * add * add
1 parent 8a5c9e0 commit 3c4de5a

File tree

2 files changed

+96
-45
lines changed

2 files changed

+96
-45
lines changed

.changelog/2752.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_mysql_instance: Optimize code logic
3+
```

tencentcloud/services/cdb/resource_tc_mysql_instance.go

Lines changed: 93 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,31 +1035,55 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met
10351035
return err
10361036
}
10371037

1038-
err = resource.Retry(6*time.Hour, func() *resource.RetryError {
1039-
taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId)
1038+
if waitSwitch != InWindow {
1039+
err = resource.Retry(6*time.Hour, func() *resource.RetryError {
1040+
taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId)
1041+
1042+
if err != nil {
1043+
if _, ok := err.(*errors.TencentCloudSDKError); !ok {
1044+
return resource.RetryableError(err)
1045+
} else {
1046+
return resource.NonRetryableError(err)
1047+
}
1048+
}
10401049

1041-
if err != nil {
1042-
if _, ok := err.(*errors.TencentCloudSDKError); !ok {
1043-
return resource.RetryableError(err)
1044-
} else {
1045-
return resource.NonRetryableError(err)
1050+
if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1051+
return nil
10461052
}
1047-
}
1053+
if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1054+
return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus))
1055+
}
1056+
err = fmt.Errorf("update mysql mem_size/volume_size task status is %s, we won't wait for it finish, it show message:%s",
1057+
taskStatus, message)
1058+
return resource.NonRetryableError(err)
1059+
})
10481060

1049-
if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1050-
return nil
1051-
}
1052-
if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1053-
return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus))
1061+
if err != nil {
1062+
log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n", logId, err.Error())
1063+
return err
10541064
}
1055-
err = fmt.Errorf("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s",
1056-
",", message)
1057-
return resource.NonRetryableError(err)
1058-
})
1065+
} else {
1066+
err = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError {
1067+
mysqlInfo, err := mysqlService.DescribeDBInstanceById(ctx, d.Id())
1068+
1069+
if err != nil {
1070+
if _, ok := err.(*errors.TencentCloudSDKError); !ok {
1071+
return resource.RetryableError(err)
1072+
} else {
1073+
return resource.NonRetryableError(err)
1074+
}
1075+
}
10591076

1060-
if err != nil {
1061-
log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n ", logId, err.Error())
1062-
return err
1077+
if *mysqlInfo.TaskStatus == 15 {
1078+
return nil
1079+
}
1080+
return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size task status is %v", mysqlInfo.TaskStatus))
1081+
})
1082+
1083+
if err != nil {
1084+
log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n", logId, err.Error())
1085+
return err
1086+
}
10631087
}
10641088
}
10651089
} else {
@@ -1120,31 +1144,55 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met
11201144
return err
11211145
}
11221146

1123-
err = resource.Retry(6*time.Hour, func() *resource.RetryError {
1124-
taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId)
1147+
if waitSwitch != InWindow {
1148+
err = resource.Retry(6*time.Hour, func() *resource.RetryError {
1149+
taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId)
11251150

1126-
if err != nil {
1127-
if _, ok := err.(*errors.TencentCloudSDKError); !ok {
1128-
return resource.RetryableError(err)
1129-
} else {
1130-
return resource.NonRetryableError(err)
1151+
if err != nil {
1152+
if _, ok := err.(*errors.TencentCloudSDKError); !ok {
1153+
return resource.RetryableError(err)
1154+
} else {
1155+
return resource.NonRetryableError(err)
1156+
}
11311157
}
1132-
}
11331158

1134-
if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1135-
return nil
1136-
}
1137-
if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1138-
return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus))
1159+
if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1160+
return nil
1161+
}
1162+
if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1163+
return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus))
1164+
}
1165+
err = fmt.Errorf("update mysql mem_size/volume_size task status is %s, we won't wait for it finish, it show message:%s",
1166+
taskStatus, message)
1167+
return resource.NonRetryableError(err)
1168+
})
1169+
1170+
if err != nil {
1171+
log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n ", logId, err.Error())
1172+
return err
11391173
}
1140-
err = fmt.Errorf("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s",
1141-
",", message)
1142-
return resource.NonRetryableError(err)
1143-
})
1174+
} else {
1175+
err = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError {
1176+
mysqlInfo, err := mysqlService.DescribeDBInstanceById(ctx, d.Id())
1177+
1178+
if err != nil {
1179+
if _, ok := err.(*errors.TencentCloudSDKError); !ok {
1180+
return resource.RetryableError(err)
1181+
} else {
1182+
return resource.NonRetryableError(err)
1183+
}
1184+
}
11441185

1145-
if err != nil {
1146-
log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n ", logId, err.Error())
1147-
return err
1186+
if *mysqlInfo.TaskStatus == 15 {
1187+
return nil
1188+
}
1189+
return resource.RetryableError(fmt.Errorf("update mysql engineVersion task status is %v", mysqlInfo.TaskStatus))
1190+
})
1191+
1192+
if err != nil {
1193+
log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n", logId, err.Error())
1194+
return err
1195+
}
11481196
}
11491197
}
11501198
}
@@ -1221,17 +1269,17 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met
12211269
if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
12221270
return resource.RetryableError(fmt.Errorf("update mysql engineVersion status is %s", taskStatus))
12231271
}
1224-
err = fmt.Errorf("update mysql engineVersion task status is %s,we won't wait for it finish ,it show message:%s",
1225-
",", message)
1272+
err = fmt.Errorf("update mysql engineVersion task status is %s, we won't wait for it finish, it show message:%s",
1273+
taskStatus, message)
12261274
return resource.NonRetryableError(err)
12271275
})
12281276

12291277
if err != nil {
1230-
log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n ", logId, err.Error())
1278+
log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n", logId, err.Error())
12311279
return err
12321280
}
12331281
} else {
1234-
err = resource.Retry(6*time.Hour, func() *resource.RetryError {
1282+
err = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError {
12351283
mysqlInfo, err := mysqlService.DescribeDBInstanceById(ctx, d.Id())
12361284

12371285
if err != nil {
@@ -1249,7 +1297,7 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met
12491297
})
12501298

12511299
if err != nil {
1252-
log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n ", logId, err.Error())
1300+
log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n", logId, err.Error())
12531301
return err
12541302
}
12551303

0 commit comments

Comments
 (0)