@@ -10,6 +10,7 @@ import (
10
10
"net/http"
11
11
"regexp"
12
12
"strings"
13
+ "time"
13
14
14
15
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
15
16
@@ -363,6 +364,9 @@ func (me *CosService) DeleteBucket(ctx context.Context, bucket string, forced bo
363
364
if err != nil {
364
365
return err
365
366
}
367
+
368
+ // wait cos backend sync
369
+ time .Sleep (30 * time .Second )
366
370
}
367
371
368
372
request := s3.DeleteBucketInput {
@@ -397,17 +401,26 @@ func (me *CosService) ForceCleanObject(ctx context.Context, bucket string, versi
397
401
return fmt .Errorf ("cos force clean object error: the list of objects is truncated and the bucket[%s] needs to be deleted manually!!!" , bucket )
398
402
}
399
403
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
+
400
412
verCnt := len (objList .Version )
401
413
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 )
403
416
404
- delCnt := verCnt + markerCnt
417
+ delCnt := verCnt + markerCnt + listObjCnt
405
418
if delCnt == 0 {
406
419
return nil
407
420
}
408
421
409
422
delObjs := make ([]cos.Object , 0 , delCnt )
410
- if versioned || multiAz {
423
+ if versioned {
411
424
//add the versions
412
425
for _ , v := range objList .Version {
413
426
delObjs = append (delObjs , cos.Object {
@@ -430,8 +443,19 @@ func (me *CosService) ForceCleanObject(ctx context.Context, bucket string, versi
430
443
}
431
444
}
432
445
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
+
433
457
opt := cos.ObjectDeleteMultiOptions {
434
- Quiet : true ,
458
+ Quiet : false ,
435
459
Objects : delObjs ,
436
460
}
437
461
0 commit comments