mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
Encode dir obj names before expiration (#19305)
Object names of directory objects qualified for ExpiredObjectAllVersions must be encoded appropriately before calling on deletePrefix on their erasure set. e.g., a directory object and regular objects with overlapping prefixes could lead to the expiration of regular objects, which is not the intention of ILM. ``` bucket/dir/ ---> directory object bucket/dir/obj-1 ``` When `bucket/dir/` qualifies for expiration, the current implementation would remove regular objects under the prefix `bucket/dir/`, in this case, `bucket/dir/obj-1`.
This commit is contained in:
committed by
GitHub
parent
a03dac41eb
commit
da81c6cc27
@@ -47,6 +47,7 @@ const (
|
||||
ObjectCreatedDeleteTagging
|
||||
ObjectRemovedDelete
|
||||
ObjectRemovedDeleteMarkerCreated
|
||||
ObjectRemovedDeleteAllVersions
|
||||
ObjectRemovedNoOP
|
||||
BucketCreated
|
||||
BucketRemoved
|
||||
@@ -100,6 +101,7 @@ func (name Name) Expand() []Name {
|
||||
ObjectRemovedDelete,
|
||||
ObjectRemovedDeleteMarkerCreated,
|
||||
ObjectRemovedNoOP,
|
||||
ObjectRemovedDeleteAllVersions,
|
||||
}
|
||||
case ObjectReplicationAll:
|
||||
return []Name{
|
||||
@@ -193,6 +195,8 @@ func (name Name) String() string {
|
||||
return "s3:ObjectRemoved:DeleteMarkerCreated"
|
||||
case ObjectRemovedNoOP:
|
||||
return "s3:ObjectRemoved:NoOP"
|
||||
case ObjectRemovedDeleteAllVersions:
|
||||
return "s3:ObjectRemoved:DeleteAllVersions"
|
||||
case ObjectReplicationAll:
|
||||
return "s3:Replication:*"
|
||||
case ObjectReplicationFailed:
|
||||
@@ -313,6 +317,8 @@ func ParseName(s string) (Name, error) {
|
||||
return ObjectRemovedDeleteMarkerCreated, nil
|
||||
case "s3:ObjectRemoved:NoOP":
|
||||
return ObjectRemovedNoOP, nil
|
||||
case "s3:ObjectRemoved:DeleteAllVersions":
|
||||
return ObjectRemovedDeleteAllVersions, nil
|
||||
case "s3:Replication:*":
|
||||
return ObjectReplicationAll, nil
|
||||
case "s3:Replication:OperationFailedReplication":
|
||||
|
||||
@@ -36,7 +36,7 @@ func TestNameExpand(t *testing.T) {
|
||||
ObjectCreatedCompleteMultipartUpload, ObjectCreatedCopy, ObjectCreatedPost, ObjectCreatedPut,
|
||||
ObjectCreatedPutRetention, ObjectCreatedPutLegalHold, ObjectCreatedPutTagging, ObjectCreatedDeleteTagging,
|
||||
}},
|
||||
{ObjectRemovedAll, []Name{ObjectRemovedDelete, ObjectRemovedDeleteMarkerCreated, ObjectRemovedNoOP}},
|
||||
{ObjectRemovedAll, []Name{ObjectRemovedDelete, ObjectRemovedDeleteMarkerCreated, ObjectRemovedNoOP, ObjectRemovedDeleteAllVersions}},
|
||||
{ObjectAccessedHead, []Name{ObjectAccessedHead}},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user