mirror of
https://github.com/versity/versitygw.git
synced 2026-09-20 15:04:27 +00:00
Merge pull request #1184 from versity/sis/deleteobject-non-empty-dir-obj
fix: Fixes non empty directory objects deletion
This commit is contained in:
+16
-1
@@ -3224,7 +3224,22 @@ func (p *Posix) DeleteObject(ctx context.Context, input *s3.DeleteObjectInput) (
|
||||
return nil, s3err.GetAPIError(s3err.ErrNoSuchKey)
|
||||
}
|
||||
if errors.Is(err, syscall.ENOTEMPTY) {
|
||||
return nil, s3err.GetAPIError(s3err.ErrDirectoryNotEmpty)
|
||||
// If the directory object has been uploaded explicitly
|
||||
// remove the directory object (remove the ETag)
|
||||
_, err = p.meta.RetrieveAttribute(nil, objpath, "", etagkey)
|
||||
if err != nil && !errors.Is(err, meta.ErrNoSuchKey) {
|
||||
return nil, fmt.Errorf("get object etag: %w", err)
|
||||
}
|
||||
if errors.Is(err, meta.ErrNoSuchKey) {
|
||||
return nil, s3err.GetAPIError(s3err.ErrDirectoryNotEmpty)
|
||||
}
|
||||
|
||||
err = p.meta.DeleteAttribute(objpath, "", etagkey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("delete object etag: %w", err)
|
||||
}
|
||||
|
||||
return &s3.DeleteObjectOutput{}, nil
|
||||
}
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("delete object: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user