From 9e31a054aaa3cea2e28df735a31806265aa7ab05 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Mon, 7 Aug 2023 17:32:24 -0400 Subject: [PATCH] RecoverNode now uses on-disk database --- store/store.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/store/store.go b/store/store.go index d22c8ab5..f9112363 100644 --- a/store/store.go +++ b/store/store.go @@ -1860,16 +1860,15 @@ func RecoverNode(dataDir string, logger *log.Logger, logs raft.LogStore, stable return fmt.Errorf("failed to restore any of the available snapshots") } - // Now, create an in-memory database for temporary use, so we can generate new - // snapshots later. - var db *sql.DB - if len(b) == 0 { - db, err = sql.OpenInMemory(false) - } else { - db, err = sql.DeserializeIntoMemory(b, false) + // Now, create a temporary database, so we can generate new snapshots later. + tmpDBPath := filepath.Join(dataDir, "recovery.db") + if os.WriteFile(tmpDBPath, b, 0660) != nil { + return fmt.Errorf("failed to write SQLite data to temporary file: %s", err) } + defer os.Remove(tmpDBPath) + db, err := sql.Open(tmpDBPath, false, true) if err != nil { - return fmt.Errorf("create in-memory database failed: %s", err) + return fmt.Errorf("failed to open temporary database: %s", err) } defer db.Close()