From d369242b48d93567207640a9bd545c35df34be60 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Sun, 14 Oct 2018 00:29:05 +0200 Subject: [PATCH] Bump rocksdb to version 5.15.10 and use data format version 3 --- Gopkg.lock | 2 +- build/docker/bin/Dockerfile | 2 +- db/dboptions.go | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 24370914..87fff214 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -167,7 +167,7 @@ branch = "master" name = "github.com/tecbot/gorocksdb" packages = ["."] - revision = "3e476152774442234f9a9f747386a48a1d82a515" + revision = "214b6b7bc0f06812ab5602fdc502a3e619916f38" [[projects]] branch = "master" diff --git a/build/docker/bin/Dockerfile b/build/docker/bin/Dockerfile index b957ad16..89000521 100644 --- a/build/docker/bin/Dockerfile +++ b/build/docker/bin/Dockerfile @@ -10,7 +10,7 @@ RUN apt-get update && \ apt-get clean ENV GOLANG_VERSION=go1.10.linux-amd64 -ENV ROCKSDB_VERSION=rocksdb-5.14.3 +ENV ROCKSDB_VERSION=v5.15.10 ENV GOPATH=/go ENV PATH=$PATH:$GOPATH/bin ENV CGO_CFLAGS="-I/opt/rocksdb/include" diff --git a/db/dboptions.go b/db/dboptions.go index f982f8a3..ffdbfdbb 100644 --- a/db/dboptions.go +++ b/db/dboptions.go @@ -1,6 +1,12 @@ package db +// #include "rocksdb/c.h" +import "C" + import ( + "reflect" + "unsafe" + "github.com/tecbot/gorocksdb" ) @@ -39,12 +45,19 @@ func boolToChar(b bool) C.uchar { */ func createAndSetDBOptions(bloomBits int, c *gorocksdb.Cache, maxOpenFiles int) *gorocksdb.Options { - blockOpts := gorocksdb.NewDefaultBlockBasedTableOptions() + // blockOpts := gorocksdb.NewDefaultBlockBasedTableOptions() + cNativeBlockOpts := C.rocksdb_block_based_options_create() + blockOpts := &gorocksdb.BlockBasedTableOptions{} + cBlockField := reflect.Indirect(reflect.ValueOf(blockOpts)).FieldByName("c") + cBlockPtr := (**C.rocksdb_block_based_table_options_t)(unsafe.Pointer(cBlockField.UnsafeAddr())) + *cBlockPtr = cNativeBlockOpts blockOpts.SetBlockSize(32 << 10) // 32kB blockOpts.SetBlockCache(c) if bloomBits > 0 { blockOpts.SetFilterPolicy(gorocksdb.NewBloomFilter(bloomBits)) } + C.rocksdb_block_based_options_set_format_version(cNativeBlockOpts, 3) + opts := gorocksdb.NewDefaultOptions() opts.SetBlockBasedTableFactory(blockOpts) opts.SetCreateIfMissing(true)