mirror of
https://github.com/minio/minio.git
synced 2025-11-23 19:17:43 -05:00
ilm: Handle DeleteAllVersions action differently for DEL markers (#19481)
i.e., this rule element doesn't apply to DEL markers.
This is a breaking change to how ExpiredObejctDeleteAllVersions
functions today. This is necessary to avoid the following highly probable
footgun scenario in the future.
Scenario:
The user uses tags-based filtering to select an object's time to live(TTL).
The application sometimes deletes objects, too, making its latest
version a DEL marker. The previous implementation skipped tag-based filters
if the newest version was DEL marker, voiding the tag-based TTL. The user is
surprised to find objects that have expired sooner than expected.
* Add DelMarkerExpiration action
This ILM action removes all versions of an object if its
the latest version is a DEL marker.
```xml
<DelMarkerObjectExpiration>
<Days> 10 </Days>
</DelMarkerObjectExpiration>
```
1. Applies only to objects whose,
• The latest version is a DEL marker.
• satisfies the number of days criteria
2. Deletes all versions of this object
3. Associated rule can't have tag-based filtering
Includes,
- New bucket event type for deletion due to DelMarkerExpiration
This commit is contained in:
committed by
GitHub
parent
8161411c5d
commit
7926401cbd
@@ -105,6 +105,31 @@ func TestInvalidRules(t *testing.T) {
|
||||
</Rule>`,
|
||||
expectedErr: errXMLNotWellFormed,
|
||||
},
|
||||
{
|
||||
inputXML: `<Rule>
|
||||
<ID>Rule with a tag and DelMarkerExpiration</ID>
|
||||
<Filter><Tag><Key>k1</Key><Value>v1</Value></Tag></Filter>
|
||||
<DelMarkerExpiration>
|
||||
<Days>365</Days>
|
||||
</DelMarkerExpiration>
|
||||
<Status>Enabled</Status>
|
||||
</Rule>`,
|
||||
expectedErr: errInvalidRuleDelMarkerExpiration,
|
||||
},
|
||||
{
|
||||
inputXML: `<Rule>
|
||||
<ID>Rule with multiple tags and DelMarkerExpiration</ID>
|
||||
<Filter><And>
|
||||
<Tag><Key>k1</Key><Value>v1</Value></Tag>
|
||||
<Tag><Key>k2</Key><Value>v2</Value></Tag>
|
||||
</And></Filter>
|
||||
<DelMarkerExpiration>
|
||||
<Days>365</Days>
|
||||
</DelMarkerExpiration>
|
||||
<Status>Enabled</Status>
|
||||
</Rule>`,
|
||||
expectedErr: errInvalidRuleDelMarkerExpiration,
|
||||
},
|
||||
}
|
||||
|
||||
for i, tc := range invalidTestCases {
|
||||
|
||||
Reference in New Issue
Block a user