Merge PR #3792: Use DBBackend set at compile time

* use DBBackend set at compile time

Closes: #3719

* Refresh changelog

* Tweak Makefile
This commit is contained in:
Alessio Treglia
2019-03-04 21:31:55 +01:00
committed by Christopher Goes
parent c7f6a3e8c6
commit 3e82a8bbb8
9 changed files with 105 additions and 63 deletions
+22
View File
@@ -3,7 +3,15 @@ package types
import (
"encoding/binary"
"encoding/json"
"fmt"
"time"
dbm "github.com/tendermint/tendermint/libs/db"
)
var (
// This is set at compile time. Could be cleveldb, defaults is goleveldb.
DBBackend = ""
)
// SortedJSON takes any JSON and returns it sorted by keys. Also, all white-spaces
@@ -58,3 +66,17 @@ func ParseTimeBytes(bz []byte) (time.Time, error) {
}
return t.UTC().Round(0), nil
}
// NewLevelDB instantiate a new LevelDB instance according to DBBackend.
func NewLevelDB(name, dir string) (db dbm.DB, err error) {
backend := dbm.GoLevelDBBackend
if DBBackend == string(dbm.CLevelDBBackend) {
backend = dbm.CLevelDBBackend
}
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("couldn't create db: %v", r)
}
}()
return dbm.NewDB(name, backend, dir), err
}