diff --git a/test/s3/iam/s3_iam_framework.go b/test/s3/iam/s3_iam_framework.go index 178ae0763..c155b7358 100644 --- a/test/s3/iam/s3_iam_framework.go +++ b/test/s3/iam/s3_iam_framework.go @@ -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) } + // Add a small delay to allow deletion to propagate + time.Sleep(100 * time.Millisecond) + // Now create it fresh _, err = s3Client.CreateBucket(&s3.CreateBucketInput{ Bucket: aws.String(bucketName), }) 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 { return err