diff --git a/docs/bucket/lifecycle/README.md b/docs/bucket/lifecycle/README.md index 34c84d3a9..9a5b2c873 100644 --- a/docs/bucket/lifecycle/README.md +++ b/docs/bucket/lifecycle/README.md @@ -134,7 +134,11 @@ Note: This rule has an implicit zero NoncurrentDays, which makes the expiry of t #### 3.2.b Automatic removal of all versions (MinIO only extension) This is available only on MinIO as an extension to the Expiration feature. The following rule makes it possible to remove all versions of an object under -the prefix `user-uploads/` as soon as the latest object satisfies the expiration criteria. +the prefix `user-uploads/` as soon as the latest object satisfies the expiration criteria. + +> NOTE: If the latest object is a delete marker then filtering based on `Filter.Tags` is ignored and +> if the DELETE marker modTime satisfies the `Expiration.Days` then all versions of the object are +> immediately purged. ``` { diff --git a/internal/bucket/lifecycle/lifecycle.go b/internal/bucket/lifecycle/lifecycle.go index 25d5b2a32..0d47da36f 100644 --- a/internal/bucket/lifecycle/lifecycle.go +++ b/internal/bucket/lifecycle/lifecycle.go @@ -261,7 +261,7 @@ func (lc Lifecycle) FilterRules(obj ObjectOpts) []Rule { if !strings.HasPrefix(obj.Name, rule.GetPrefix()) { continue } - if !rule.Filter.TestTags(obj.UserTags) { + if !obj.DeleteMarker && !rule.Filter.TestTags(obj.UserTags) { continue } rules = append(rules, rule)