From e8b256793a55b5a48af10b7634615e861de559db Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 10 Sep 2025 10:23:35 +0000 Subject: [PATCH] chore: clean up migrated database (#10381) Remove the migrated v0.14.0 database format after two weeks. Remove a few old patterns that are no longer relevant. Ensure the cleanup runs in both the config and database directories. Signed-off-by: Jakob Borg --- cmd/syncthing/main.go | 51 +++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index c9006c5cb..ed20c0332 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -781,40 +781,39 @@ func initialAutoUpgradeCheck(misc *db.Typed) (upgrade.Release, error) { // suitable time after they have gone out of fashion. func cleanConfigDirectory() { patterns := map[string]time.Duration{ - "panic-*.log": 7 * 24 * time.Hour, // keep panic logs for a week - "audit-*.log": 7 * 24 * time.Hour, // keep audit logs for a week - "index": 14 * 24 * time.Hour, // keep old index format for two weeks - "index-v0.11.0.db": 14 * 24 * time.Hour, // keep old index format for two weeks - "index-v0.13.0.db": 14 * 24 * time.Hour, // keep old index format for two weeks - "index*.converted": 14 * 24 * time.Hour, // keep old converted indexes for two weeks - "config.xml.v*": 30 * 24 * time.Hour, // old config versions for a month - "*.idx.gz": 30 * 24 * time.Hour, // these should for sure no longer exist - "backup-of-v0.8": 30 * 24 * time.Hour, // these neither - "tmp-index-sorter.*": time.Minute, // these should never exist on startup - "support-bundle-*": 30 * 24 * time.Hour, // keep old support bundle zip or folder for a month - "csrftokens.txt": 0, // deprecated, remove immediately + "panic-*.log": 7 * 24 * time.Hour, // keep panic logs for a week + "audit-*.log": 7 * 24 * time.Hour, // keep audit logs for a week + "index-v0.14.0.db-migrated": 14 * 24 * time.Hour, // keep old index format for two weeks + "config.xml.v*": 30 * 24 * time.Hour, // old config versions for a month + "support-bundle-*": 30 * 24 * time.Hour, // keep old support bundle zip or folder for a month } - for pat, dur := range patterns { - fs := fs.NewFilesystem(fs.FilesystemTypeBasic, locations.GetBaseDir(locations.ConfigBaseDir)) - files, err := fs.Glob(pat) - if err != nil { - slog.Warn("Failed to clean config directory", slogutil.Error(err)) - continue - } - - for _, file := range files { - info, err := fs.Lstat(file) + locations := slices.Compact([]string{ + locations.GetBaseDir(locations.ConfigBaseDir), + locations.GetBaseDir(locations.DataBaseDir), + }) + for _, loc := range locations { + fs := fs.NewFilesystem(fs.FilesystemTypeBasic, loc) + for pat, dur := range patterns { + entries, err := fs.Glob(pat) if err != nil { slog.Warn("Failed to clean config directory", slogutil.Error(err)) continue } - if time.Since(info.ModTime()) > dur { - if err = fs.RemoveAll(file); err != nil { + for _, entry := range entries { + info, err := fs.Lstat(entry) + if err != nil { slog.Warn("Failed to clean config directory", slogutil.Error(err)) - } else { - slog.Warn("Cleaned away old file", slogutil.FilePath(filepath.Base(file))) + continue + } + + if time.Since(info.ModTime()) > dur { + if err = fs.RemoveAll(entry); err != nil { + slog.Warn("Failed to clean config directory", slogutil.Error(err)) + } else { + slog.Warn("Cleaned away old file", slogutil.FilePath(filepath.Base(entry))) + } } } }