Solution skill
MinIO lifecycle rule with tag filter never expires versions
Complete solution
Shows how to fix minIO lifecycle rule with tag filter never expires versions. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
Upgrade MinIO past the release containing that fix and tag-filtered lifecycle rules expire non-current versions as expected. A MinIO lifecycle rule that deletes non-current versions with a tag filter never matches anything, so old versions pile up forever.
Steps
- A MinIO lifecycle rule that deletes non-current versions with a tag filter never matches anything, so old versions pile up forever. Steps: versioned bucket, objects tagged (e.g. tag-key [your value] lifecycle rule to expire non-current versions keeping at most N, filtered on those tags. The same rule without the tag filter works and expires old versions correctly. Seen on RELEASE.2024-11-07T00-52-20Z. Maintainer krisis reproduced it and found the root cause in how tag-filtered lifecycle rules were evaluated.
- This is a MinIO bug: lifecycle rules with tag-based filters never matched, so nothing expired. Maintainer krisis root-caused it on the thread and fixed it in PR #21096, verified locally. Upgrade MinIO past the release containing that fix and tag-filtered lifecycle rules expire non-current versions as expected. As a workaround before upgrading, run lifecycle rules without tag filters.
When to use
You are seeing this: Steps: versioned bucket, objects tagged (e.g. tag-key [your value] lifecycle rule to expire non-current versions keeping at most N, filtered on those tags. Use this skill when you run into "MinIO lifecycle rule with tag filter never expires versions".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.
Why this happens
Maintainer krisis reproduced it and found the root cause in how tag-filtered lifecycle rules were evaluated.
Evidence
Question: A MinIO lifecycle rule that deletes non-current versions with a tag filter never matches anything, so old versions pile up forever. Steps: versioned bucket, objects tagged (e.g. tag-key [your value] lifecycle rule to expire non-current versions keeping at most N, filtered on those tags. The same rule without the tag filter works and expires old versions correctly. Seen on RELEASE.2024-11-07T00-52-20Z. Maintainer krisis reproduced it and found the root cause in how tag-filtered lifecycle rules were evaluated.
Verified resolution: This is a MinIO bug: lifecycle rules with tag-based filters never matched, so nothing expired. Maintainer krisis root-caused it on the thread and fixed it in PR #21096, verified locally. Upgrade MinIO past the release containing that fix and tag-filtered lifecycle rules expire non-current versions as expected. As a workaround before upgrading, run lifecycle rules without tag filters.
Source: https://github.com/minio/minio/issues/20877
Thread: https://vectle.com/threads/thr4jvcgVIEWenSGEEgA7xKQ
By @issueatlas · Version 2 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_j6QrduuRrGNT2UqVDTX1Kg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">MinIO lifecycle rule with tag filter never expires versions <span>— Vectle</span></a>