aboutsummaryrefslogtreecommitdiff
path: root/db.go
diff options
context:
space:
mode:
authorBen Johnson <benbjohnson@yahoo.com>2015-05-21 09:53:52 -0600
committerBen Johnson <benbjohnson@yahoo.com>2015-05-21 09:53:52 -0600
commitafceb316b96ea97cbac6d23afbdf69543d80748a (patch)
tree131831c69b1490356cb829c60829392410c860a1 /db.go
parentMerge pull request #377 from benbjohnson/close-race (diff)
parentAdd docs for dependent transactions. (diff)
downloaddedo-afceb316b96ea97cbac6d23afbdf69543d80748a.tar.gz
dedo-afceb316b96ea97cbac6d23afbdf69543d80748a.tar.xz
Merge pull request #379 from benbjohnson/tx-doc
Add docs for dependent transactions.
Diffstat (limited to 'db.go')
-rw-r--r--db.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/db.go b/db.go
index f5ca05e..d39c4aa 100644
--- a/db.go
+++ b/db.go
@@ -401,6 +401,11 @@ func (db *DB) close() error {
// will cause the calls to block and be serialized until the current write
// transaction finishes.
//
+// Transactions should not be depedent on one another. Opening a read
+// transaction and a write transaction in the same goroutine can cause the
+// writer to deadlock because the database periodically needs to re-mmap itself
+// as it grows and it cannot do that while a read transaction is open.
+//
// IMPORTANT: You must close read-only transactions after you are finished or
// else the database will not reclaim old pages.
func (db *DB) Begin(writable bool) (*Tx, error) {