Skip to content

Commit ac1c8a7

Browse files
committed
add
1 parent 0d20e79 commit ac1c8a7

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

tencentcloud/services/cos/service_tencentcloud_cos.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net/http"
1111
"regexp"
1212
"strings"
13+
"time"
1314

1415
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
1516

@@ -363,6 +364,9 @@ func (me *CosService) DeleteBucket(ctx context.Context, bucket string, forced bo
363364
if err != nil {
364365
return err
365366
}
367+
368+
// wait cos backend sync
369+
time.Sleep(30 * time.Second)
366370
}
367371

368372
request := s3.DeleteBucketInput{
@@ -397,17 +401,26 @@ func (me *CosService) ForceCleanObject(ctx context.Context, bucket string, versi
397401
return fmt.Errorf("cos force clean object error: the list of objects is truncated and the bucket[%s] needs to be deleted manually!!!", bucket)
398402
}
399403

404+
// Get all object list
405+
listObjects, err := me.ListObjects(ctx, bucket)
406+
if err != nil {
407+
log.Printf("[CRITAL]%s api[%s] fail, resp body [%s], reason[%s]\n",
408+
logId, "ListObjects", resp.Body, err.Error())
409+
return fmt.Errorf("cos force clean object error: %s, bucket: %s", err.Error(), bucket)
410+
}
411+
400412
verCnt := len(objList.Version)
401413
markerCnt := len(objList.DeleteMarker)
402-
log.Printf("[DEBUG][ForceCleanObject]%s api[%s] success, get [%v] versions of object, get [%v] deleteMarker, versioned[%v].\n", logId, "GetObjectVersions", verCnt, markerCnt, versioned)
414+
listObjCnt := len(listObjects)
415+
log.Printf("[DEBUG][ForceCleanObject]%s api[%s] success, get [%v] versions of object, get [%v] deleteMarker, get [%v] listObjects. versioned[%v], multiAzed[%v].\n", logId, "GetObjectVersions", verCnt, markerCnt, listObjCnt, versioned, multiAz)
403416

404-
delCnt := verCnt + markerCnt
417+
delCnt := verCnt + markerCnt + listObjCnt
405418
if delCnt == 0 {
406419
return nil
407420
}
408421

409422
delObjs := make([]cos.Object, 0, delCnt)
410-
if versioned || multiAz {
423+
if versioned {
411424
//add the versions
412425
for _, v := range objList.Version {
413426
delObjs = append(delObjs, cos.Object{
@@ -430,8 +443,19 @@ func (me *CosService) ForceCleanObject(ctx context.Context, bucket string, versi
430443
}
431444
}
432445

446+
if multiAz {
447+
// add obj list
448+
for _, v := range listObjects {
449+
if v.Key != nil {
450+
delObjs = append(delObjs, cos.Object{
451+
Key: *v.Key,
452+
})
453+
}
454+
}
455+
}
456+
433457
opt := cos.ObjectDeleteMultiOptions{
434-
Quiet: true,
458+
Quiet: false,
435459
Objects: delObjs,
436460
}
437461

0 commit comments

Comments
 (0)