|
|
@ -705,12 +705,22 @@ func (f *S3IAMTestFramework) CreateBucketWithCleanup(s3Client *s3.S3, bucketName |
|
|
f.t.Logf("Warning: Failed to delete existing bucket %s: %v", bucketName, deleteErr) |
|
|
f.t.Logf("Warning: Failed to delete existing bucket %s: %v", bucketName, deleteErr) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Add a small delay to allow deletion to propagate
|
|
|
|
|
|
time.Sleep(100 * time.Millisecond) |
|
|
|
|
|
|
|
|
// Now create it fresh
|
|
|
// Now create it fresh
|
|
|
_, err = s3Client.CreateBucket(&s3.CreateBucketInput{ |
|
|
_, err = s3Client.CreateBucket(&s3.CreateBucketInput{ |
|
|
Bucket: aws.String(bucketName), |
|
|
Bucket: aws.String(bucketName), |
|
|
}) |
|
|
}) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
return fmt.Errorf("failed to recreate bucket after cleanup: %v", err) |
|
|
|
|
|
|
|
|
// If it still says bucket exists after cleanup, it might be in an inconsistent state
|
|
|
|
|
|
// In this case, just use the existing bucket since we emptied it
|
|
|
|
|
|
if awsErr, ok := err.(awserr.Error); ok && (awsErr.Code() == "BucketAlreadyExists" || awsErr.Code() == "BucketAlreadyOwnedByYou") { |
|
|
|
|
|
f.t.Logf("Bucket %s still exists after cleanup, reusing it", bucketName) |
|
|
|
|
|
// Bucket exists and is empty, so we can proceed
|
|
|
|
|
|
} else { |
|
|
|
|
|
return fmt.Errorf("failed to recreate bucket after cleanup: %v", err) |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
return err |
|
|
return err |
|
|
|