diff --git a/db.go b/db.go index 65feea4..fafdb62 100644 --- a/db.go +++ b/db.go @@ -1625,7 +1625,7 @@ func restoreWAL(ctx context.Context, r Replica, generation string, index int, db // unable to checkpoint during this time. // // If dst is set, the database file is copied to that location before checksum. -func (db *DB) CRC64(dst string) (uint64, Pos, error) { +func (db *DB) CRC64() (uint64, Pos, error) { db.mu.Lock() defer db.mu.Unlock() @@ -1655,16 +1655,7 @@ func (db *DB) CRC64(dst string) (uint64, Pos, error) { } pos.Offset = 0 - // Copy file, if dst specified. - checksumPath := db.Path() - if dst != "" { - if err := copyFile(dst, db.Path()); err != nil { - return 0, Pos{}, err - } - checksumPath = dst - } - - chksum, err := checksumFile(checksumPath) + chksum, err := checksumFile(db.Path()) if err != nil { return 0, pos, err } diff --git a/db_test.go b/db_test.go index 717682d..7227cfb 100644 --- a/db_test.go +++ b/db_test.go @@ -118,7 +118,7 @@ func TestDB_CRC64(t *testing.T) { t.Run("ErrNotExist", func(t *testing.T) { db := MustOpenDB(t) defer MustCloseDB(t, db) - if _, _, err := db.CRC64(""); !os.IsNotExist(err) { + if _, _, err := db.CRC64(); !os.IsNotExist(err) { t.Fatalf("unexpected error: %#v", err) } }) @@ -131,7 +131,7 @@ func TestDB_CRC64(t *testing.T) { t.Fatal(err) } - chksum0, _, err := db.CRC64("") + chksum0, _, err := db.CRC64() if err != nil { t.Fatal(err) } @@ -139,7 +139,7 @@ func TestDB_CRC64(t *testing.T) { // Issue change that is applied to the WAL. Checksum should not change. if _, err := sqldb.Exec(`CREATE TABLE t (id INT);`); err != nil { t.Fatal(err) - } else if chksum1, _, err := db.CRC64(""); err != nil { + } else if chksum1, _, err := db.CRC64(); err != nil { t.Fatal(err) } else if chksum0 == chksum1 { t.Fatal("expected different checksum event after WAL change") @@ -150,7 +150,7 @@ func TestDB_CRC64(t *testing.T) { t.Fatal(err) } - if chksum2, _, err := db.CRC64(""); err != nil { + if chksum2, _, err := db.CRC64(); err != nil { t.Fatal(err) } else if chksum0 == chksum2 { t.Fatal("expected different checksums after checkpoint") diff --git a/replica.go b/replica.go index f9b2726..6ae8f3b 100644 --- a/replica.go +++ b/replica.go @@ -1049,11 +1049,12 @@ func ValidateReplica(ctx context.Context, r Replica) error { if err != nil { return err } + defer os.RemoveAll(tmpdir) // Compute checksum of primary database under lock. This prevents a // sync from occurring and the database will not be written. primaryPath := filepath.Join(tmpdir, "primary") - chksum0, pos, err := db.CRC64(primaryPath) + chksum0, pos, err := db.CRC64() if err != nil { return fmt.Errorf("cannot compute checksum: %w", err) }