aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2025-08-11 02:20:02 -0700
committerchrislu <chris.lu@gmail.com>2025-08-11 02:20:02 -0700
commita265a07922281f03f6ea1cfdce3cc20a6acae720 (patch)
treebfbbf1a95a7ef724e0327a32d96dfb6784a9ca21
parent25bbf4c3d44b1c8a9aa4980e37ed399ec249f771 (diff)
downloadseaweedfs-a265a07922281f03f6ea1cfdce3cc20a6acae720.tar.xz
seaweedfs-a265a07922281f03f6ea1cfdce3cc20a6acae720.zip
fix ttl objects
fix https://github.com/seaweedfs/seaweedfs/discussions/7107#discussioncomment-14069018
-rw-r--r--weed/filer/tikv/tikv_store.go17
1 files changed, 16 insertions, 1 deletions
diff --git a/weed/filer/tikv/tikv_store.go b/weed/filer/tikv/tikv_store.go
index c02f2c22e..3708ddec5 100644
--- a/weed/filer/tikv/tikv_store.go
+++ b/weed/filer/tikv/tikv_store.go
@@ -10,6 +10,7 @@ import (
"fmt"
"io"
"strings"
+ "time"
"github.com/seaweedfs/seaweedfs/weed/filer"
"github.com/seaweedfs/seaweedfs/weed/glog"
@@ -265,7 +266,21 @@ func (store *TikvStore) ListDirectoryPrefixedEntries(ctx context.Context, dirPat
break
}
- // Only increment counter after successful processing
+ // Check TTL expiration before calling eachEntryFunc (similar to Redis stores)
+ if entry.TtlSec > 0 {
+ if entry.Crtime.Add(time.Duration(entry.TtlSec) * time.Second).Before(time.Now()) {
+ // Entry is expired, delete it and continue without counting toward limit
+ if deleteErr := store.DeleteEntry(ctx, entry.FullPath); deleteErr != nil {
+ glog.V(0).InfofCtx(ctx, "failed to delete expired entry %s: %v", entry.FullPath, deleteErr)
+ }
+ if err := iter.Next(); err != nil {
+ break
+ }
+ continue
+ }
+ }
+
+ // Only increment counter for non-expired entries
i++
if err := iter.Next(); !eachEntryFunc(entry) || err != nil {