From 84329b277f79ecd4a233957a00a4af0b6ef00ab0 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 7 Oct 2026 19:07:32 +0200 Subject: [PATCH] fix(sqlite): avoid early garbage collection of deleted recv-enc files (#10916) Signed-off-by: Jakob Borg --- internal/db/sqlite/db_service.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/db/sqlite/db_service.go b/internal/db/sqlite/db_service.go index 0afb24d14..184b63306 100644 --- a/internal/db/sqlite/db_service.go +++ b/internal/db/sqlite/db_service.go @@ -218,6 +218,10 @@ func garbageCollectOldDeletedLocked(ctx context.Context, fdb *folderDB) error { return nil } + // Receive-encrypted files always have the timestamp below. We cannot + // use this to conclude a deleted file is safe for garbage collection. + recvEncModified := 1234567890 * time.Second + // Remove deleted files that are marked as not needed (we have processed // them) and they were deleted more than MaxDeletedFileAge ago. // Keep the local high-water mark reachable by the index sender. @@ -225,12 +229,13 @@ func garbageCollectOldDeletedLocked(ctx context.Context, fdb *folderDB) error { res, err := fdb.stmt(` DELETE FROM files WHERE deleted + AND modified != ? AND modified < ? AND local_flags & {{.FlagLocalNeeded}} == 0 AND sequence NOT IN ( SELECT sequence FROM indexids WHERE device_idx = {{.LocalDeviceIdx}} ) - `).Exec(time.Now().Add(-fdb.deleteRetention).UnixNano()) + `).Exec(recvEncModified, time.Now().Add(-fdb.deleteRetention).UnixNano()) if err != nil { return wrap(err) }