From 440b89418f5907099cf06764ad7f2b83cf12fbcf Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Mon, 31 Mar 2014 08:52:13 -0600 Subject: Write freelist after each commit. Well, this is embarassing. Somehow the freelist was never getting written after each commit. This commit fixes that and fixes a small reporting issue with "bolt pages". --- db.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'db.go') diff --git a/db.go b/db.go index 7ad9ca6..59b21ef 100644 --- a/db.go +++ b/db.go @@ -271,6 +271,10 @@ func (db *DB) close() error { db.freelist = nil db.path = "" + // Clear ops. + db.ops.writeAt = nil + db.ops.metaWriteAt = nil + // Close the mmap. if err := db.munmap(); err != nil { return err @@ -533,8 +537,12 @@ func (db *DB) Check() error { reachable := make(map[pgid]*page) reachable[0] = tx.page(0) // meta0 reachable[1] = tx.page(1) // meta1 - reachable[tx.meta.buckets] = tx.page(tx.meta.buckets) - reachable[tx.meta.freelist] = tx.page(tx.meta.freelist) + for i := uint32(0); i <= tx.page(tx.meta.buckets).overflow; i++ { + reachable[tx.meta.buckets+pgid(i)] = tx.page(tx.meta.buckets) + } + for i := uint32(0); i <= tx.page(tx.meta.freelist).overflow; i++ { + reachable[tx.meta.freelist+pgid(i)] = tx.page(tx.meta.freelist) + } // Check each reachable page within each bucket. for _, bucket := range tx.Buckets() { -- cgit v1.2.3