From cc24bebea8025285b61153e3bd853568078326df Mon Sep 17 00:00:00 2001 From: Andras Banki-Horvath Date: Thu, 17 Aug 2023 19:46:06 +0200 Subject: [PATCH] loopd: always skip migration if loop_sqlite.db file already exists This commit ensures that we don't even check for the existence of the loop.db file if loop_sqlite.db already present. This is to ensure that on systems that may by any trigger restore deleted files we don't try to re-run migration which would otherwise make loopd unable to start up properly. --- loopd/migration.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/loopd/migration.go b/loopd/migration.go index cc9b369..6594b6d 100644 --- a/loopd/migration.go +++ b/loopd/migration.go @@ -82,6 +82,17 @@ func needSqlMigration(cfg *Config) bool { return false } + // Do not migrate if sqlite db already exists. This is to prevent the + // migration from running multiple times for systems that may restore + // any deleted files occasionally (reboot, etc). + sqliteDBPath := filepath.Join(cfg.DataDir, "loop_sqlite.db") + if lnrpc.FileExists(sqliteDBPath) { + log.Infof("Found sqlite db at %v, skipping migration", + sqliteDBPath) + + return false + } + // Now we'll check if the bolt db exists. if !lnrpc.FileExists(filepath.Join(cfg.DataDir, "loop.db")) { return false