From 6c49fba592e88f16129419a30ba3a562a70e1bb1 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Tue, 2 Feb 2021 15:04:20 -0700 Subject: [PATCH] Check checkpoint result during restore --- db.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/db.go b/db.go index 0ea49ad..984741c 100644 --- a/db.go +++ b/db.go @@ -1591,13 +1591,14 @@ func restoreWAL(ctx context.Context, r Replica, generation string, index int, db } defer d.Close() - if _, err := d.Exec(`PRAGMA wal_checkpoint(TRUNCATE);`); err != nil { - return err - } else if err := d.Close(); err != nil { + var row [3]int + if err := d.QueryRow(`PRAGMA wal_checkpoint(TRUNCATE);`).Scan(&row[0], &row[1], &row[2]); err != nil { return err + } else if row[0] != 0 { + return fmt.Errorf("truncation checkpoint failed during restore (%d,%d,%d)", row[0], row[1], row[2]) } - return nil + return d.Close() } // CRC64 returns a CRC-64 ISO checksum of the database and its current position.