From d9a0f51bee413ccff75251740d7d78736a9c4a49 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Mon, 7 Jul 2014 08:39:59 -0600 Subject: [PATCH 1/3] Add 'Intro to BoltDB' link. --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index bf45319..18dcf25 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,12 @@ Since Bolt is meant to be used as such a low-level piece of functionality, simpl > — [Tobias Lütke](https://twitter.com/tobi) +## Resources + +For more information on getting started with Bolt, check out the following articles: + +* [Intro to BoltDB: Painless Performant Persistence](http://blog.natefinch.com/2014/07/intro-to-boltdb-painless-performant.html) by [Nate Finch](https://github.com/natefinch). + ## Project Status Bolt is functionally complete and has nearly full unit test coverage. The library test suite also includes randomized black box testing to ensure database consistency and thread safety. Bolt is currently in use in a few projects, however, it is still at a beta stage so please use with caution and report any bugs found. From e903703e61efcfa8fcace7371c70912355e5576d Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 10 Jul 2014 07:11:01 -0600 Subject: [PATCH 2/3] Fix Windows mmap sizing. This commit fixes an issue on Windows where the database was doubling when it was re-opened. This occurred because Windows has to truncate the file to the mmap size and the mmap resizing code was doubling the size whenever the DB size was at the next threshold. This has been changed so that the DB size will double only when the DB size is above the next threshold. --- db.go | 2 +- db_test.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/db.go b/db.go index 6ef35ea..35a56e8 100644 --- a/db.go +++ b/db.go @@ -212,7 +212,7 @@ func (db *DB) munmap() error { // mmapSize determines the appropriate size for the mmap given the current size // of the database. The minimum size is 4MB and doubles until it reaches 1GB. func (db *DB) mmapSize(size int) int { - if size < minMmapSize { + if size <= minMmapSize { return minMmapSize } else if size < maxMmapStep { size *= 2 diff --git a/db_test.go b/db_test.go index e689836..0b4e840 100644 --- a/db_test.go +++ b/db_test.go @@ -297,7 +297,8 @@ func TestDB_mmapSize(t *testing.T) { assert.Equal(t, db.mmapSize(0), minMmapSize) assert.Equal(t, db.mmapSize(16384), minMmapSize) assert.Equal(t, db.mmapSize(minMmapSize-1), minMmapSize) - assert.Equal(t, db.mmapSize(minMmapSize), minMmapSize*2) + assert.Equal(t, db.mmapSize(minMmapSize), minMmapSize) + assert.Equal(t, db.mmapSize(minMmapSize+1), (minMmapSize*2)+4096) assert.Equal(t, db.mmapSize(10000000), 20000768) assert.Equal(t, db.mmapSize((1<<30)-1), 2147483648) assert.Equal(t, db.mmapSize(1<<30), 1<<31) From 90fe8d9c12ad11c3302aeb35dd254a90f492f61a Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 10 Jul 2014 09:41:40 -0600 Subject: [PATCH 3/3] Fix test for path errors. --- db_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_test.go b/db_test.go index 0b4e840..1eee26f 100644 --- a/db_test.go +++ b/db_test.go @@ -21,7 +21,7 @@ var statsFlag = flag.Bool("stats", false, "show performance stats") // Ensure that opening a database with a bad path returns an error. func TestOpen_BadPath(t *testing.T) { - db, err := Open("/../bad-path", 0666, nil) + db, err := Open("", 0666, nil) assert.Error(t, err) assert.Nil(t, db) }