aboutsummaryrefslogtreecommitdiff
path: root/node.go
diff options
context:
space:
mode:
authorBen Johnson <benbjohnson@yahoo.com>2014-05-09 07:45:19 -0600
committerBen Johnson <benbjohnson@yahoo.com>2014-05-09 07:45:19 -0600
commit5f13a416ce60998edfd48712a8a229f865aabdda (patch)
tree5c56b2e5597202076bf5b1b34fd9a75c5043710d /node.go
parentMerge pull request #158 from benbjohnson/bolt-info (diff)
parentremove stray file (diff)
downloaddedo-5f13a416ce60998edfd48712a8a229f865aabdda.tar.gz
dedo-5f13a416ce60998edfd48712a8a229f865aabdda.tar.xz
Merge pull request #159 from Shopify/pgid_overflow_checks
add asserts for detecting pgid high watermark overflow
Diffstat (limited to 'node.go')
-rw-r--r--node.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/node.go b/node.go
index 1bc889d..14bf136 100644
--- a/node.go
+++ b/node.go
@@ -98,6 +98,8 @@ func (n *node) prevSibling() *node {
// put inserts a key/value.
func (n *node) put(oldKey, newKey, value []byte, pgid pgid, flags uint32) {
+ _assert(pgid < n.bucket.tx.meta.pgid, "pgid (%d) above high water mark (%d)", pgid, n.bucket.tx.meta.pgid)
+
// Find insertion index.
index := sort.Search(len(n.inodes), func(i int) bool { return bytes.Compare(n.inodes[i].key, oldKey) != -1 })
@@ -278,6 +280,7 @@ func (n *node) spill() error {
}
// Write the node.
+ _assert(p.id < tx.meta.pgid, "pgid (%d) above high water mark (%d)", p.id, tx.meta.pgid)
node.pgid = p.id
node.write(p)
@@ -307,6 +310,7 @@ func (n *node) spill() error {
}
// Write the new root.
+ _assert(p.id < tx.meta.pgid, "pgid (%d) above high water mark (%d)", p.id, tx.meta.pgid)
parent.pgid = p.id
parent.write(p)
}