From 2f84fdfc8dbcfb136c20c50059e01adf722e5246 Mon Sep 17 00:00:00 2001 From: Copilot Date: Sat, 28 Mar 2026 06:39:08 -0700 Subject: [PATCH] s3lifecycle: guard ShouldExpireNoncurrentVersion against zero SuccessorModTime Add early return when obj.IsLatest or obj.SuccessorModTime.IsZero() to prevent premature expiration of versions with uninitialized successor timestamps (zero value would compute to epoch, always expired). --- weed/s3api/s3lifecycle/evaluator.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/weed/s3api/s3lifecycle/evaluator.go b/weed/s3api/s3lifecycle/evaluator.go index afb64e194..415d07615 100644 --- a/weed/s3api/s3lifecycle/evaluator.go +++ b/weed/s3api/s3lifecycle/evaluator.go @@ -73,6 +73,9 @@ func ShouldExpireNoncurrentVersion(rule Rule, obj ObjectInfo, noncurrentIndex in if rule.NoncurrentVersionExpirationDays <= 0 { return false } + if obj.IsLatest || obj.SuccessorModTime.IsZero() { + return false + } if !matchesFilter(rule, obj) { return false }