aboutsummaryrefslogtreecommitdiff
path: root/db.go
diff options
context:
space:
mode:
authorBen Johnson <benbjohnson@yahoo.com>2014-06-18 16:16:58 -0600
committerBen Johnson <benbjohnson@yahoo.com>2014-06-18 16:16:58 -0600
commitb1dbd35da1d7abea5e52b7aacdb7bed2812dd9db (patch)
treefb2c88aecba8c12709de55d099947ddb3b016016 /db.go
parentMerge pull request #201 from Shopify/freelist_stats_cleanup (diff)
downloaddedo-b1dbd35da1d7abea5e52b7aacdb7bed2812dd9db.tar.gz
dedo-b1dbd35da1d7abea5e52b7aacdb7bed2812dd9db.tar.xz
Fix merge-split regression.
This commit reverts merge-split and fixes the node.split() to do a multi-page split. This issue caused problems with bulk loading because it would split into a small page and a very large page. The very large page, in turn, would be an arbitrary size so when it was freed later it would be difficult to reuse and would cause serious fragmentation issues.
Diffstat (limited to 'db.go')
-rw-r--r--db.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/db.go b/db.go
index e88e499..9a125ee 100644
--- a/db.go
+++ b/db.go
@@ -5,6 +5,8 @@ import (
"fmt"
"hash/fnv"
"os"
+ "runtime/debug"
+ "strings"
"sync"
"unsafe"
)
@@ -652,3 +654,8 @@ func warn(v ...interface{}) {
func warnf(msg string, v ...interface{}) {
fmt.Fprintf(os.Stderr, msg+"\n", v...)
}
+
+func printstack() {
+ stack := strings.Join(strings.Split(string(debug.Stack()), "\n")[2:], "\n")
+ fmt.Fprintln(os.Stderr, stack)
+}