s3: Force a prefix removal using a special header (#12504)

An S3 client can send `x-minio-force-delete: true` to remove a prefix.
This commit is contained in:
Anis Elleuch
2021-06-16 02:43:14 +01:00
committed by GitHub
parent f30c996d48
commit 7722b91e1d
7 changed files with 72 additions and 1 deletions

View File

@@ -919,10 +919,25 @@ func (s *erasureSets) GetObjectInfo(ctx context.Context, bucket, object string,
return set.GetObjectInfo(ctx, bucket, object, opts)
}
func (s *erasureSets) deletePrefix(ctx context.Context, bucket string, prefix string) error {
for _, s := range s.sets {
_, err := s.DeleteObject(ctx, bucket, prefix, ObjectOptions{DeletePrefix: true})
if err != nil {
return err
}
}
return nil
}
// DeleteObject - deletes an object from the hashedSet based on the object name.
func (s *erasureSets) DeleteObject(ctx context.Context, bucket string, object string, opts ObjectOptions) (objInfo ObjectInfo, err error) {
set := s.getHashedSet(object)
auditObjectErasureSet(ctx, object, set)
if opts.DeletePrefix {
err := s.deletePrefix(ctx, bucket, object)
return ObjectInfo{}, err
}
return set.DeleteObject(ctx, bucket, object, opts)
}