From a803027b0923805399e3e1effcfc1b69cb86fdfb Mon Sep 17 00:00:00 2001 From: Denis Babchuk Date: Sat, 31 Oct 2026 14:02:37 +0300 Subject: [PATCH] fix(ilm): count DelMarkerExpiration as an active lifecycle rule Signed-off-by: Denis Babchuk --- internal/bucket/lifecycle/lifecycle.go | 3 +++ internal/bucket/lifecycle/lifecycle_test.go | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/internal/bucket/lifecycle/lifecycle.go b/internal/bucket/lifecycle/lifecycle.go index 8fc999d5b..7eeda0d8a 100644 --- a/internal/bucket/lifecycle/lifecycle.go +++ b/internal/bucket/lifecycle/lifecycle.go @@ -208,6 +208,9 @@ func (lc Lifecycle) HasActiveRules(prefix string) bool { if rule.Expiration.DeleteMarker.val { return true } + if !rule.DelMarkerExpiration.Empty() { + return true + } if !rule.Transition.IsDateNull() && rule.Transition.Date.Before(time.Now().UTC()) { return true } diff --git a/internal/bucket/lifecycle/lifecycle_test.go b/internal/bucket/lifecycle/lifecycle_test.go index 2af5556ed..e59fd3686 100644 --- a/internal/bucket/lifecycle/lifecycle_test.go +++ b/internal/bucket/lifecycle/lifecycle_test.go @@ -819,6 +819,26 @@ func TestHasActiveRules(t *testing.T) { prefix: "", want: true, }, + { // DelMarkerExpiration as the only action + inputConfig: `Enabled1`, + prefix: "", + want: true, + }, + { + inputConfig: `Enabledfoodir/1`, + prefix: "foodir/foobject", + want: true, + }, + { + inputConfig: `Enabledfoodir/1`, + prefix: "zdir/foobject", + want: false, + }, + { + inputConfig: `Disabled1`, + prefix: "", + want: false, + }, } for i, tc := range testCases {