diff --git a/Makefile b/Makefile index 9d57c83c3e82e708ffae5ef97f4474b17b6504ae..5185c96d64de2efd4e78d771f8899fb3e2ec36ec 100644 --- a/Makefile +++ b/Makefile @@ -106,9 +106,6 @@ test: semantics/z3/build/libz3.a test-lmdb: semantics/z3/build/libz3.a TEST_DB=lmdb $(GORUN) build/ci.go test -test-badger: semantics/z3/build/libz3.a - TEST_DB=badger $(GORUN) build/ci.go test - test-bolt: semantics/z3/build/libz3.a TEST_DB=bolt $(GORUN) build/ci.go test diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index aae56fa652f862ef77f4a6f429fa275a80448875..b570a00fcfdb75bea5567fdb49f5859eaf84430c 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -387,7 +387,6 @@ func exportPreimages(ctx *cli.Context) error { return nil } -// TODO [Issue 144] support BadgerDB func copyDb(ctx *cli.Context) error { // Ensure we have a source chain directory to copy if len(ctx.Args()) < 1 { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index ddce8b0444d3d81d1e199b7476bd2c0e77b10eef..3ca6fa3e6aa2c04b320c85f8105185be8a007e30 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -443,7 +443,7 @@ var ( } DatabaseFlag = cli.StringFlag{ Name: "database", - Usage: "Which database software to use? Currently supported values: badger & bolt & lmdb", + Usage: "Which database software to use? Currently supported values: bolt & lmdb", Value: "lmdb", } PrivateApiAddr = cli.StringFlag{ @@ -1279,8 +1279,7 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) { } databaseFlag := ctx.GlobalString(DatabaseFlag.Name) - cfg.BadgerDB = strings.EqualFold(databaseFlag, "badger") //case insensitive - cfg.LMDB = strings.EqualFold(databaseFlag, "lmdb") //case insensitive + cfg.LMDB = strings.EqualFold(databaseFlag, "lmdb") //case insensitive if cfg.LMDB && ctx.GlobalString(LMDBMapSizeFlag.Name) != "" { var size datasize.ByteSize err := size.UnmarshalText([]byte(ctx.GlobalString(LMDBMapSizeFlag.Name))) diff --git a/ethdb/AbstractKV.md b/ethdb/AbstractKV.md index 296abfa2e765cf3a0b134864f7cfa9d45d851e89..3062b7ee16b9666e6acc7506a1154402c8b3db61 100644 --- a/ethdb/AbstractKV.md +++ b/ethdb/AbstractKV.md @@ -1,12 +1,12 @@ ## Target: -To build 1 key-value abstraction on top of Bolt, Badger and RemoteDB (our own read-only TCP protocol for key-value databases). +To build 1 key-value abstraction on top of Bolt, LMDB and RemoteDB (our own read-only TCP protocol for key-value databases). ## Design principles: - No internal copies/allocations - all must be delegated to user. It means app must copy keys/values before put to database. Make it part of contract - written clearly in docs, because it's unsafe (unsafe to put slice to DB and then change it). Known problems: mutation.Put does copy internally. -- Low-level API: as close to original Bolt/Badger as possible. +- Low-level API: as close to original LMDB as possible. - Expose concept of transaction - app-level code can .Rollback() or .Commit() at once. ## Result interface: @@ -58,10 +58,9 @@ type NoValuesCursor interface { #### Buckets concept: - Bucket is an interface, can’t be nil, can't return error -- For Badger - auto-remove bucket from key prefix #### InMemory and ReadOnly modes: -- `NewBadger().InMem().ReadOnly().Open(ctx)` +- `NewLMDB().InMem().ReadOnly().Open(ctx)` #### Context: - For transactions - yes @@ -69,10 +68,8 @@ type NoValuesCursor interface { #### Cursor/Iterator: - Cursor is an interface, can’t be nil, can't return error -- `cursor.Prefix(prefix)` filtering keys by given prefix. Badger using i.Prefix. RemoteDb - to support server side filtering. -- `cursor.Prefetch(1000)` - useful for Badger and Remote -- Badger iterator require i.Close() call - abstraction automated it. -- Badger iterator has AllVersions=true by default - why? +- `cursor.Prefix(prefix)` filtering keys by given prefix. RemoteDb - to support server side filtering. +- `cursor.Prefetch(1000)` - useful for Remote - Methods .First, .Next, .Seek - can return error. If err!=nil then key SHOULD be !=nil (can be []byte{} for example). Then looping code will look as: ```go for k, v, err := c.First(); k != nil; k, v, err = c.Next() { @@ -84,23 +81,18 @@ for k, v, err := c.First(); k != nil; k, v, err = c.Next() { ``` #### Concept of Item: -- Badger's concept of Item adding complexity, need hide it: `k,v,err := curor.First()` - No Lazy values, but can disable fetching values by: `.Cursor().PrefetchValues(false).FirstKey()` -- Badger's metadata, ttl and version - don’t expose #### Managed/un-managed transactions - Tx is an interface - db.Update, db.View - yes - db.Batch - no +- all keys and values returned by all method are valid until end of transaction +- transaction object can be used only withing 1 goroutine #### Errors: - Lib-Errors must be properly wrapped to project: for example ethdb.ErrKeyNotFound -#### Badger’s streaming: -- Need more research: why it’s based on callback instead of “for channel� Is it ordered? Is it stoppable? -- Is it equal to Bolt’s ForEach? - -#### Yeld: abstraction leak from RemoteDb, but need investigate how Badger Streams working here #### i.SeekTo vs i.Rewind: TBD #### in-memory LRU cache: TBD - Reverse Iterator @@ -108,9 +100,7 @@ for k, v, err := c.First(); k != nil; k, v, err = c.Next() { ## Not covered by Abstractions: - DB stats, bucket.Stats(), item.EstimatedSize() - buckets stats, buckets list -- Merge operator of Badger - no - TTL of keys -- Fetch AllVersions of Badger - Monotonic int DB.GetSequence - Nested Buckets - Backups, tx.WriteTo diff --git a/ethdb/abstractbench/abstract_bench_test.go b/ethdb/abstractbench/abstract_bench_test.go index 168493100a24236aa8e42c721a72a1b2d4e730d3..95d2eec64dedcf48c69514bad7ee17fde14c29ea 100644 --- a/ethdb/abstractbench/abstract_bench_test.go +++ b/ethdb/abstractbench/abstract_bench_test.go @@ -12,10 +12,8 @@ import ( var boltOriginDb *bolt.DB -//var badgerOriginDb *badger.DB var boltKV *ethdb.BoltKV -//var badgerDb ethdb.KV var lmdbKV *ethdb.LmdbKV var keysAmount = 100_000 @@ -32,7 +30,6 @@ func setupDatabases() func() { } //boltKV = ethdb.NewBolt().Path("/Users/alex.sharov/Library/Ethereum/geth-remove-me2/geth/chaindata").ReadOnly().MustOpen().(*ethdb.BoltKV) boltKV = ethdb.NewBolt().Path("test1").MustOpen().(*ethdb.BoltKV) - //badgerDb = ethdb.NewBadger().Path("test2").MustOpen() //lmdbKV = ethdb.NewLMDB().Path("/Users/alex.sharov/Library/Ethereum/geth-remove-me4/geth/chaindata_lmdb").ReadOnly().MustOpen().(*ethdb.LmdbKV) lmdbKV = ethdb.NewLMDB().Path("test4").MustOpen().(*ethdb.LmdbKV) var errOpen error @@ -43,11 +40,6 @@ func setupDatabases() func() { panic(errOpen) } - //badgerOriginDb, errOpen = badger.Open(badger.DefaultOptions("test4")) - //if errOpen != nil { - // panic(errOpen) - //} - if err := boltOriginDb.Update(func(tx *bolt.Tx) error { for _, name := range dbutils.Buckets { _, createErr := tx.CreateBucketIfNotExists(name, false) @@ -94,38 +86,6 @@ func setupDatabases() func() { // panic(err) //} // - //if err := badgerDb.Update(ctx, func(tx ethdb.Tx) error { - // defer func(t time.Time) { fmt.Println("abstract badger filled:", time.Since(t)) }(time.Now()) - // - // //for i := 0; i < keysAmount; i++ { - // // v := make([]byte, vsize) - // // k := make([]byte, 8) - // // binary.BigEndian.PutUint64(k, uint64(i)) - // // bucket := tx.Bucket(dbutils.CurrentStateBucket) - // // if err := bucket.Put(k, common.CopyBytes(v)); err != nil { - // // panic(err) - // // } - // //} - // - // return nil - //}); err != nil { - // panic(err) - //} - // - //if err := badgerOriginDb.Update(func(tx *badger.Txn) error { - // defer func(t time.Time) { fmt.Println("pure badger filled:", time.Since(t)) }(time.Now()) - // - // for i := 0; i < keysAmount; i++ { - // v := make([]byte, vsize) - // k := make([]byte, 8) - // binary.BigEndian.PutUint64(k, uint64(i)) - // _ = tx.Set(append(dbutils.CurrentStateBucket, k...), common.CopyBytes(v)) - // } - // - // return nil - //}); err != nil { - // panic(err) - //} // //if err := lmdbKV.Update(ctx, func(tx ethdb.Tx) error { // defer func(t time.Time) { fmt.Println("abstract lmdb filled:", time.Since(t)) }(time.Now()) @@ -189,32 +149,7 @@ func BenchmarkCursor(b *testing.B) { } } }) - //b.Run("abstract badger", func(b *testing.B) { - // for i := 0; i < b.N; i++ { - // if err := badgerDb.View(ctx, func(tx *ethdb.Tx) error { - // bucket, err := tx.Bucket(dbutils.AccountsBucket) - // if err != nil { - // return err - // } - // - // c, err := bucket.CursorOpts().Cursor() - // if err != nil { - // return err - // } - // - // for k, v, err := c.First(); k != nil; k, v, err = c.Next() { - // if err != nil { - // return err - // } - // _ = v - // } - // - // return nil - // }); err != nil { - // panic(err) - // } - // } - //}) + b.Run("pure bolt", func(b *testing.B) { for i := 0; i < b.N; i++ { @@ -231,27 +166,5 @@ func BenchmarkCursor(b *testing.B) { } } }) - //b.Run("pure badger", func(b *testing.B) { - // valFunc := func(val []byte) error { - // _ = val - // return nil - // } - // for i := 0; i < b.N; i++ { - // if err := badgerOriginDb.View(func(tx *badger.Txn) error { - // opts := badger.DefaultIteratorOptions - // opts.Prefix = dbutils.AccountsBucket - // it := tx.NewIterator(opts) - // - // for it.Rewind(); it.Valid(); it.Next() { - // item := it.Item() - // _ = item.Key() - // _ = item.Value(valFunc) - // } - // it.Close() - // return nil - // }); err != nil { - // panic(err) - // } - // } - //}) + } diff --git a/ethdb/database_test.go b/ethdb/database_test.go index ae561029d705ce5bbf1b1ce023963036e3a6b83f..31cfc81498df6ca3f3cb2c5822941207fc5b8105 100644 --- a/ethdb/database_test.go +++ b/ethdb/database_test.go @@ -40,13 +40,6 @@ func newTestBoltDB() (Database, func()) { } } -func newTestBadgerDB() (Database, func()) { - db := NewObjectDatabase(NewBadger().InMem().MustOpen()) - return db, func() { - db.Close() - } -} - func newTestLmdb() *ObjectDatabase { return NewObjectDatabase(NewLMDB().InMem().MustOpen()) } @@ -68,13 +61,6 @@ func TestMemoryDB_PutGet(t *testing.T) { testNoPanicAfterDbClosed(db, t) } -func TestBadgerDB_PutGet(t *testing.T) { - db, remove := newTestBadgerDB() - defer remove() - testPutGet(db, t) - testNoPanicAfterDbClosed(db, t) -} - func TestLMDB_PutGet(t *testing.T) { db := newTestLmdb() defer db.Close() @@ -218,12 +204,6 @@ func TestLMDB_ParallelPutGet(t *testing.T) { testParallelPutGet(db) } -func TestBadgerDB_ParallelPutGet(t *testing.T) { - db, remove := newTestBadgerDB() - defer remove() - testParallelPutGet(db) -} - func testParallelPutGet(db MinDatabase) { const n = 8 var pending sync.WaitGroup @@ -292,12 +272,6 @@ func TestBoltDB_Walk(t *testing.T) { testWalk(db, t) } -func TestBadgerDB_Walk(t *testing.T) { - db, remove := newTestBadgerDB() - defer remove() - testWalk(db, t) -} - func TestLMDB_Walk(t *testing.T) { db := newTestLmdb() defer db.Close() diff --git a/ethdb/kv_abstract.go b/ethdb/kv_abstract.go index 8f078d84c3ddde304067ff6b1b170e4267663080..0ababe3b1b323e89174e9da7f1de1b9ef9bdefb8 100644 --- a/ethdb/kv_abstract.go +++ b/ethdb/kv_abstract.go @@ -75,7 +75,6 @@ type DbProvider uint8 const ( Bolt DbProvider = iota - Badger Remote Lmdb ) diff --git a/ethdb/kv_abstract_test.go b/ethdb/kv_abstract_test.go index 99ed576367a1487e35fafc1ef5d5be1f425e6ae8..bbac948f4967223af3983088c32a31333405b7ca 100644 --- a/ethdb/kv_abstract_test.go +++ b/ethdb/kv_abstract_test.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "io" "testing" "time" @@ -89,47 +88,31 @@ func TestManagedTx(t *testing.T) { func setupDatabases() (writeDBs []ethdb.KV, readDBs []ethdb.KV, close func()) { writeDBs = []ethdb.KV{ ethdb.NewBolt().InMem().MustOpen(), - ethdb.NewLMDB().InMem().MustOpen(), // for remote db - ethdb.NewBadger().InMem().MustOpen(), ethdb.NewLMDB().InMem().MustOpen(), ethdb.NewLMDB().InMem().MustOpen(), // for remote2 db } - serverIn, clientOut := io.Pipe() - clientIn, serverOut := io.Pipe() conn := bufconn.Listen(1024 * 1024) readDBs = []ethdb.KV{ writeDBs[0], - ethdb.NewRemote().InMem(clientIn, clientOut).MustOpen(), - writeDBs[2], - writeDBs[3], + writeDBs[1], ethdb.NewRemote2().InMem(conn).MustOpen(), } - serverCtx, serverCancel := context.WithCancel(context.Background()) - go func() { - _ = remotedbserver.Server(serverCtx, writeDBs[1], serverIn, serverOut, nil) - }() grpcServer := grpc.NewServer() go func() { - remote.RegisterKVServer(grpcServer, remotedbserver.NewKvServer(writeDBs[4])) + remote.RegisterKVServer(grpcServer, remotedbserver.NewKvServer(writeDBs[2])) if err := grpcServer.Serve(conn); err != nil { log.Error("private RPC server fail", "err", err) } }() return writeDBs, readDBs, func() { - serverIn.Close() - serverOut.Close() - clientIn.Close() - clientOut.Close() grpcServer.Stop() conn.Close() - serverCancel() - for _, db := range readDBs { db.Close() } diff --git a/ethdb/kv_badger.go b/ethdb/kv_badger.go deleted file mode 100644 index 16962950e5dda9fe385c63afb503d9418e109ef3..0000000000000000000000000000000000000000 --- a/ethdb/kv_badger.go +++ /dev/null @@ -1,555 +0,0 @@ -package ethdb - -import ( - "context" - "errors" - "fmt" - "os" - "sync" - "time" - - "github.com/dgraph-io/badger/v2" - "github.com/ledgerwatch/turbo-geth/common" - "github.com/ledgerwatch/turbo-geth/common/dbutils" - "github.com/ledgerwatch/turbo-geth/log" -) - -// https://github.com/dgraph-io/badger#garbage-collection -const gcPeriod = 5 * time.Minute - -type badgerOpts struct { - Badger badger.Options -} - -func (opts badgerOpts) Path(path string) badgerOpts { - opts.Badger = opts.Badger.WithDir(path).WithValueDir(path) - return opts -} - -func (opts badgerOpts) InMem() badgerOpts { - opts.Badger = opts.Badger.WithInMemory(true) - return opts -} - -func (opts badgerOpts) ReadOnly() badgerOpts { - opts.Badger = opts.Badger.WithReadOnly(true) - return opts -} - -func (opts badgerOpts) Open() (KV, error) { - logger := log.New("badger_db", opts.Badger.Dir) - opts.Badger = opts.Badger.WithMaxTableSize(128 << 20) // 128MB, default 64Mb - - if opts.Badger.InMemory { - opts.Badger = opts.Badger.WithEventLogging(false).WithNumCompactors(1) - } - - if !opts.Badger.InMemory { - if err := os.MkdirAll(opts.Badger.Dir, 0744); err != nil { - return nil, fmt.Errorf("could not create dir: %s, %w", opts.Badger.Dir, err) - } - } - - badgerDB, err := badger.Open(opts.Badger) - if err != nil { - return nil, err - } - - db := &badgerKV{ - opts: opts, - badger: badgerDB, - log: logger, - wg: &sync.WaitGroup{}, - } - - if !opts.Badger.InMemory { - ctx, ctxCancel := context.WithCancel(context.Background()) - db.stopGC = ctxCancel - db.wg.Add(1) - go func() { - defer db.wg.Done() - gcTicker := time.NewTicker(gcPeriod) - defer gcTicker.Stop() - db.vlogGCLoop(ctx, gcTicker) - }() - } - - return db, nil -} - -func (opts badgerOpts) MustOpen() KV { - db, err := opts.Open() - if err != nil { - panic(err) - } - return db -} - -type badgerKV struct { - opts badgerOpts - badger *badger.DB - log log.Logger - stopGC context.CancelFunc - wg *sync.WaitGroup -} - -func NewBadger() badgerOpts { - return badgerOpts{Badger: badger.DefaultOptions("")} -} - -func (db *badgerKV) vlogGCLoop(ctx context.Context, gcTicker *time.Ticker) { - // DB.RunValueLogGC(): - // This method is designed to do garbage collection while Badger is online. - // Along with randomly picking a file, it uses statistics generated by the LSM-tree compactions - // to pick files that are likely to lead to maximum space reclamation. It is recommended to be called - // during periods of low activity in your system, or periodically. One call would only result in removal - // of at max one log file. As an optimization, you could also immediately re-run it whenever - // it returns nil error (indicating a successful value log GC), as shown below. - i := 0 - for db.badger != nil { - for { // do work until badger.ErrNoRewrite - err := db.badger.RunValueLogGC(0.7) - if err == nil { - i++ - } - if errors.Is(err, badger.ErrNoRewrite) { - db.log.Info("Badger GC happened", "rewritten_vlog_files", i) - i = 0 - break - } - } - - select { - case <-ctx.Done(): - return - case <-gcTicker.C: - } - } -} - -// Close closes BoltKV -// All transactions must be closed before closing the database. -func (db *badgerKV) Close() { - if db.stopGC != nil { - db.stopGC() - } - db.wg.Wait() - if db.badger != nil { - if err := db.badger.Close(); err != nil { - db.log.Warn("failed to close badger DB", "err", err) - } else { - db.log.Info("badger database closed") - } - db.badger = nil - } -} - -func (db *badgerKV) DiskSize(_ context.Context) (uint64, error) { - lsm, vlog := db.badger.Size() - return uint64(lsm + vlog), nil -} - -func (db *badgerKV) IdealBatchSize() int { - return int(db.badger.MaxBatchSize() / 2) -} - -func (db *badgerKV) Begin(ctx context.Context, writable bool) (Tx, error) { - if db.badger == nil { - return nil, fmt.Errorf("db closed") - } - - db.wg.Add(1) - return &badgerTx{ - db: db, - ctx: ctx, - badger: db.badger.NewTransaction(writable), - }, nil -} - -type badgerTx struct { - ctx context.Context - db *badgerKV - - badger *badger.Txn - cursors []*badger.Iterator -} - -type badgerBucket struct { - nameLen uint - tx *badgerTx - prefix []byte - id int -} - -type badgerCursor struct { - badgerOpts badger.IteratorOptions - ctx context.Context - bucket badgerBucket - prefix []byte - - badger *badger.Iterator - - k []byte - v []byte - err error -} - -func (db *badgerKV) View(ctx context.Context, f func(tx Tx) error) (err error) { - if db.badger == nil { - return fmt.Errorf("db closed") - } - - db.wg.Add(1) - defer db.wg.Done() - - t := &badgerTx{db: db, ctx: ctx} - return db.badger.View(func(tx *badger.Txn) error { - defer t.closeCursors() - t.badger = tx - return f(t) - }) -} - -func (db *badgerKV) Update(ctx context.Context, f func(tx Tx) error) (err error) { - if db.badger == nil { - return fmt.Errorf("db closed") - } - - db.wg.Add(1) - defer db.wg.Done() - - t := &badgerTx{db: db, ctx: ctx} - return db.badger.Update(func(tx *badger.Txn) error { - defer t.closeCursors() - t.badger = tx - return f(t) - }) -} - -func (tx *badgerTx) Bucket(name []byte) Bucket { - b := badgerBucket{tx: tx, nameLen: uint(len(name)), id: dbutils.BucketsCfg[string(name)].ID} - b.prefix = name - return b -} - -func (tx *badgerTx) Commit(ctx context.Context) error { - if tx.db.badger == nil { - return fmt.Errorf("db closed") - } - - defer tx.db.wg.Done() - tx.closeCursors() - return tx.badger.Commit() -} - -func (tx *badgerTx) Rollback() { - if tx.db.badger == nil { - return - } - - defer tx.db.wg.Done() - tx.closeCursors() - tx.badger.Discard() -} - -func (tx *badgerTx) closeCursors() { - for _, i := range tx.cursors { - if i != nil { - i.Close() - } - } - tx.cursors = tx.cursors[:0] -} - -func (c *badgerCursor) Prefix(v []byte) Cursor { - c.prefix = append(c.prefix[:0], c.bucket.prefix[:c.bucket.nameLen]...) - c.prefix = append(c.prefix, v...) - - c.badgerOpts.Prefix = append(c.badgerOpts.Prefix[:0], c.prefix...) - return c -} - -func (c *badgerCursor) MatchBits(n uint) Cursor { - panic("not implemented yet") -} - -func (c *badgerCursor) Prefetch(v uint) Cursor { - c.badgerOpts.PrefetchSize = int(v) - return c -} - -func (c *badgerCursor) NoValues() NoValuesCursor { - c.badgerOpts.PrefetchValues = false - return &badgerNoValuesCursor{badgerCursor: c} -} - -func (b badgerBucket) Get(key []byte) (val []byte, err error) { - select { - case <-b.tx.ctx.Done(): - return nil, b.tx.ctx.Err() - default: - } - - var item *badger.Item - b.prefix = append(b.prefix[:b.nameLen], key...) - item, err = b.tx.badger.Get(b.prefix) - if err != nil { - if errors.Is(err, badger.ErrKeyNotFound) { - return nil, nil - } - return nil, err - } - if item != nil { - val, err = item.ValueCopy(nil) // can improve this by using pool - } - if val == nil { - val = []byte{} - } - return val, err -} - -func (b badgerBucket) Put(key []byte, value []byte) error { - select { - case <-b.tx.ctx.Done(): - return b.tx.ctx.Err() - default: - } - - b.prefix = append(b.prefix[:b.nameLen], key...) // avoid passing buffer in Put, need copy bytes - return b.tx.badger.Set(common.CopyBytes(b.prefix), value) -} - -func (b badgerBucket) Delete(key []byte) error { - select { - case <-b.tx.ctx.Done(): - return b.tx.ctx.Err() - default: - } - - b.prefix = append(b.prefix[:b.nameLen], key...) - return b.tx.badger.Delete(b.prefix) -} - -func (b badgerBucket) Size() (uint64, error) { - panic("not implemented") -} - -func (b badgerBucket) Clear() error { - return b.tx.db.badger.DropPrefix(dbutils.Buckets[b.id]) -} - -func (b badgerBucket) Cursor() Cursor { - c := &badgerCursor{bucket: b, ctx: b.tx.ctx, badgerOpts: badger.DefaultIteratorOptions} - c.prefix = append(c.prefix[:0], c.bucket.prefix[:c.bucket.nameLen]...) - c.badgerOpts.Prefix = append(c.badgerOpts.Prefix[:0], c.prefix...) - return c -} - -func (c *badgerCursor) initCursor() { - if c.badger != nil { - return - } - - tx := c.bucket.tx - c.badger = tx.badger.NewIterator(c.badgerOpts) - - // add to auto-cleanup on end of transactions - if tx.cursors == nil { - tx.cursors = make([]*badger.Iterator, 0, 1) - } - tx.cursors = append(tx.cursors, c.badger) -} - -func (c *badgerCursor) First() ([]byte, []byte, error) { - c.initCursor() - - c.badger.Rewind() - if !c.badger.Valid() { - c.k, c.v = nil, nil - return c.k, c.v, nil - } - item := c.badger.Item() - c.k = item.Key()[c.bucket.nameLen:] - if c.badgerOpts.PrefetchValues { - c.v, c.err = item.ValueCopy(c.v) // bech show: using .ValueCopy on same buffer has same speed as item.Value() - } - if c.err != nil { - return []byte{}, nil, c.err - } - if c.v == nil { - c.v = []byte{} - } - return c.k, c.v, nil -} - -func (c *badgerCursor) Seek(seek []byte) ([]byte, []byte, error) { - select { - case <-c.ctx.Done(): - return []byte{}, nil, c.ctx.Err() - default: - } - - c.initCursor() - - c.badger.Seek(append(c.prefix[:c.bucket.nameLen], seek...)) - if !c.badger.Valid() { - c.k, c.v = nil, nil - return c.k, c.v, nil - } - item := c.badger.Item() - c.k = item.Key()[c.bucket.nameLen:] - if c.badgerOpts.PrefetchValues { - c.v, c.err = item.ValueCopy(c.v) - } - if c.err != nil { - return []byte{}, nil, c.err - } - if c.v == nil { - c.v = []byte{} - } - - return c.k, c.v, nil -} - -func (c *badgerCursor) SeekTo(seek []byte) ([]byte, []byte, error) { - return c.Seek(seek) -} - -func (c *badgerCursor) Next() ([]byte, []byte, error) { - select { - case <-c.ctx.Done(): - return []byte{}, nil, c.ctx.Err() // on error key should be != nil - default: - } - - c.badger.Next() - if !c.badger.Valid() { - c.k, c.v = nil, nil - return c.k, c.v, nil - } - item := c.badger.Item() - c.k = item.Key()[c.bucket.nameLen:] - if c.badgerOpts.PrefetchValues { - c.v, c.err = item.ValueCopy(c.v) - } - if c.err != nil { - return []byte{}, nil, c.err // on error key should be != nil - } - if c.v == nil { - c.v = []byte{} - } - return c.k, c.v, nil -} - -func (c *badgerCursor) Delete(key []byte) error { - select { - case <-c.ctx.Done(): - return c.ctx.Err() - default: - } - - return c.bucket.Delete(key) -} - -func (c *badgerCursor) Put(key []byte, value []byte) error { - select { - case <-c.ctx.Done(): - return c.ctx.Err() - default: - } - - return c.bucket.Put(key, value) -} - -func (c *badgerCursor) Append(key []byte, value []byte) error { - return c.Put(key, value) -} - -func (c *badgerCursor) Walk(walker func(k, v []byte) (bool, error)) error { - for k, v, err := c.First(); k != nil; k, v, err = c.Next() { - if err != nil { - return err - } - ok, err := walker(k, v) - if err != nil { - return err - } - if !ok { - return nil - } - } - return nil -} - -type badgerNoValuesCursor struct { - *badgerCursor -} - -func (c *badgerNoValuesCursor) Walk(walker func(k []byte, vSize uint32) (bool, error)) error { - for k, vSize, err := c.First(); k != nil; k, vSize, err = c.Next() { - if err != nil { - return err - } - ok, err := walker(k, vSize) - if err != nil { - return err - } - if !ok { - return nil - } - } - return nil -} - -func (c *badgerNoValuesCursor) First() ([]byte, uint32, error) { - c.initCursor() - c.badger.Rewind() - if !c.badger.Valid() { - c.k, c.v = nil, nil - return c.k, 0, nil - } - item := c.badger.Item() - c.k = item.Key()[c.bucket.nameLen:] - return c.k, uint32(item.ValueSize()), nil -} - -func (c *badgerNoValuesCursor) Seek(seek []byte) ([]byte, uint32, error) { - select { - case <-c.ctx.Done(): - return []byte{}, 0, c.ctx.Err() - default: - } - - c.initCursor() - - c.badger.Seek(append(c.prefix[:c.bucket.nameLen], seek...)) - if !c.badger.Valid() { - c.k, c.v = nil, nil - return c.k, 0, nil - } - item := c.badger.Item() - c.k = item.Key()[c.bucket.nameLen:] - - return c.k, uint32(item.ValueSize()), nil -} - -func (c *badgerNoValuesCursor) SeekTo(seek []byte) ([]byte, uint32, error) { - return c.Seek(seek) -} - -func (c *badgerNoValuesCursor) Next() ([]byte, uint32, error) { - select { - case <-c.ctx.Done(): - return []byte{}, 0, c.ctx.Err() - default: - } - - c.badger.Next() - if !c.badger.Valid() { - c.k, c.v = nil, nil - return c.k, 0, nil - } - item := c.badger.Item() - c.k = item.Key()[c.bucket.nameLen:] - return c.k, uint32(item.ValueSize()), nil -} diff --git a/ethdb/memory_database.go b/ethdb/memory_database.go index 88fcb09bd4f08e7bf02d415a90e28e00f2e9b364..7cfc23e5b8e894e3d69d7debdb34a7d8d83a39b9 100644 --- a/ethdb/memory_database.go +++ b/ethdb/memory_database.go @@ -24,8 +24,6 @@ func NewMemDatabase() *ObjectDatabase { switch debug.TestDB() { case "bolt": return NewObjectDatabase(NewBolt().InMem().MustOpen()) - case "badger": - return NewObjectDatabase(NewBadger().InMem().MustOpen()) case "lmdb": return NewObjectDatabase(NewLMDB().InMem().MustOpen()) default: diff --git a/ethdb/object_db.go b/ethdb/object_db.go index 39e33f09a015c1d3e0ae4f8dbb8667974700b0ae..4475f7ca0a1f286389792d77e64a86513bec0184 100644 --- a/ethdb/object_db.go +++ b/ethdb/object_db.go @@ -70,8 +70,6 @@ func Open(path string) (*ObjectDatabase, error) { switch true { case testDB == "lmdb" || strings.HasSuffix(path, "_lmdb"): kv, err = NewLMDB().Path(path).Open() - case testDB == "badger" || strings.HasSuffix(path, "_badger"): - kv, err = NewBadger().Path(path).Open() case testDB == "bolt" || strings.HasSuffix(path, "_bolt"): kv, err = NewBolt().Path(path).Open() default: @@ -421,8 +419,6 @@ func (db *ObjectDatabase) MemCopy() *ObjectDatabase { mem = NewObjectDatabase(NewLMDB().InMem().MustOpen()) case *BoltKV: mem = NewObjectDatabase(NewBolt().InMem().MustOpen()) - case *badgerKV: - mem = NewObjectDatabase(NewBadger().InMem().MustOpen()) } if err := db.kv.View(context.Background(), func(readTx Tx) error { diff --git a/go.mod b/go.mod index f7a3f47926832fa0698d7d6c0d52edff79ac5544..4d66f388fb5623e456486088645c4a9a98517f4f 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,6 @@ require ( github.com/cloudflare/cloudflare-go v0.10.6 github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea - github.com/dgraph-io/badger/v2 v2.0.3 github.com/dlclark/regexp2 v1.2.0 // indirect github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87 diff --git a/go.sum b/go.sum index c89c744de413a3badd8ca3b5275813012cf7abf2..2daf39f4f0ffd97e548a571db82cb11071862b42 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,6 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/JekaMas/notify v0.9.4 h1:Ns+DRf9kho8T0yQNSKoZqAnbvO/Hg3KmJCUaoRhL7MM= github.com/JekaMas/notify v0.9.4/go.mod h1:KYZd45vBSOYP2/9lY38EjZtvKRZMfgWaJk8bvBxhIYk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= @@ -67,12 +65,9 @@ github.com/cloudflare/cloudflare-go v0.10.6/go.mod h1:dcRl7AXBH5Bf7QFTBVc3TRzwvo github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= @@ -82,14 +77,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= -github.com/dgraph-io/badger/v2 v2.0.3 h1:inzdf6VF/NZ+tJ8RwwYMjJMvsOALTHYdozn0qSl6XJI= -github.com/dgraph-io/badger/v2 v2.0.3/go.mod h1:3KY8+bsP8wI0OEnQJAKpd4wIJW/Mm32yw2j/9FUVnIM= -github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3 h1:MQLRM35Pp0yAyBYksjbj1nZI/w6eyRY/mWoM1sFf4kU= -github.com/dgraph-io/ristretto v0.0.2-0.20200115201040-8f368f2f2ab3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.2.0 h1:8sAhBGEM0dRWogWqWyQeIJnxjWO6oIjl8FKqREDsGfk= github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= @@ -97,8 +86,6 @@ github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf h1:sh8rkQZavChcmak github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87 h1:OMbqMXf9OAXzH1dDH82mQMrddBE8LIIwDtxeK4wE1/A= github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c h1:JHHhtb9XWJrGNMcrVP6vyzO4dusgi/HnceHTgxSejUM= github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -317,8 +304,6 @@ github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00 h1:8DPul/X0IT/1TNMIxoKLwde github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xhandler v0.0.0-20170707052532-1eb70cf1520d h1:8Tt7DYYdFqLlOIuyiE0RluKem4T+048AUafnIjH80wg= github.com/rs/xhandler v0.0.0-20170707052532-1eb70cf1520d/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil v2.20.5+incompatible h1:tYH07UPoQt0OCQdgWWMgYHy3/a9bcxNpBIysykNIP7I= @@ -329,18 +314,13 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/status-im/keycard-go v0.0.0-20190424133014-d95853db0f48 h1:ju5UTwk5Odtm4trrY+4Ca4RMj5OyXbmVeDAVad2T0Jw= github.com/status-im/keycard-go v0.0.0-20190424133014-d95853db0f48/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= @@ -362,7 +342,6 @@ github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= @@ -378,7 +357,6 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= @@ -399,7 +377,6 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -418,12 +395,10 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/node/config.go b/node/config.go index 49a557f83fac6253e03f6dc621998decad035e71..5fcc08e1e33e709714d68a7ba7b4c40500aca017 100644 --- a/node/config.go +++ b/node/config.go @@ -188,10 +188,9 @@ type Config struct { // Logger is a custom logger to use with the p2p.Server. Logger log.Logger `toml:",omitempty"` - // Whether to use BadgerDB or BoltDB or LMDB. - BadgerDB bool - LMDB bool - Bolt bool + // Whether to use BoltDB or LMDB. + LMDB bool + Bolt bool // Address to listen to when launchig listener for remote database access // empty string means not to start the listener diff --git a/node/node.go b/node/node.go index 16368e02922e5a165ae23dfc2c719e559ca0c2f7..648a6bc495e948a2fdd26ae508c692cd498868cc 100644 --- a/node/node.go +++ b/node/node.go @@ -651,11 +651,6 @@ func (n *Node) OpenDatabase(name string) (*ethdb.ObjectDatabase, error) { return ethdb.NewMemDatabase(), nil } - if n.config.BadgerDB { - log.Info("Opening Database (Badger)") - return ethdb.Open(n.config.ResolvePath(name + "_badger")) - } - if n.config.Bolt { log.Info("Opening Database (Bolt)") return ethdb.Open(n.config.ResolvePath(name + "_bolt")) diff --git a/node/service.go b/node/service.go index 38c979cb57716ca5d6b17d20eaa31776408c1761..f845c9ff5049a8f2d9d4cfac1efe6a8b91430ecc 100644 --- a/node/service.go +++ b/node/service.go @@ -51,11 +51,6 @@ func (ctx *ServiceContext) OpenDatabase(name string) (*ethdb.ObjectDatabase, err return ethdb.NewMemDatabase(), nil } - if ctx.Config.BadgerDB { - log.Info("Opening Database (Badger)") - return ethdb.Open(ctx.Config.ResolvePath(name + "_badger")) - } - if ctx.Config.Bolt { log.Info("Opening Database (Bolt)") return ethdb.Open(ctx.Config.ResolvePath(name + "_bolt"))