1
0
Fork 0

RecoverNode now uses on-disk database

master
Philip O'Toole 1 year ago
parent b95442d0fe
commit 9e31a054aa

@ -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()

Loading…
Cancel
Save