minio/internal/bucket
Krishnan Parthasarathi 7926401cbd
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
2024-04-30 18:11:10 -07:00
..
bandwidth Encode dir obj names before expiration (#19305) 2024-03-21 10:21:35 -07:00
encryption remove gateway completely (#15929) 2022-10-24 17:44:15 -07:00
lifecycle ilm: Handle DeleteAllVersions action differently for DEL markers (#19481) 2024-04-30 18:11:10 -07:00
object/lock logging: Add subsystem to log API (#19002) 2024-04-04 05:04:40 -07:00
replication Enable replication of SSE-C objects (#19107) 2024-03-28 10:44:56 -07:00
versioning Update to minio/pkg/v2 (#17967) 2023-09-04 12:57:37 -07:00