diff --git a/cosmovisor/go.mod b/cosmovisor/go.mod index f95e90dabb..52a109cd34 100644 --- a/cosmovisor/go.mod +++ b/cosmovisor/go.mod @@ -42,6 +42,8 @@ require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect + github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect + github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/go-kit/kit v0.10.0 // indirect github.com/go-logfmt/logfmt v0.5.0 // indirect diff --git a/cosmovisor/go.sum b/cosmovisor/go.sum index 1de522d1d6..e41c9ba37a 100644 --- a/cosmovisor/go.sum +++ b/cosmovisor/go.sum @@ -251,12 +251,14 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= diff --git a/db/badgerdb/db.go b/db/badgerdb/db.go index 894537a57c..6f0fb1fb3c 100644 --- a/db/badgerdb/db.go +++ b/db/badgerdb/db.go @@ -11,7 +11,7 @@ import ( "sync" "sync/atomic" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" dbutil "github.com/cosmos/cosmos-sdk/db/internal" "github.com/dgraph-io/badger/v3" @@ -20,14 +20,14 @@ import ( ) var ( - versionsFilename string = "versions.csv" + versionsFilename = "versions.csv" ) var ( - _ dbm.DBConnection = (*BadgerDB)(nil) - _ dbm.DBReader = (*badgerTxn)(nil) - _ dbm.DBWriter = (*badgerWriter)(nil) - _ dbm.DBReadWriter = (*badgerWriter)(nil) + _ db.DBConnection = (*BadgerDB)(nil) + _ db.DBReader = (*badgerTxn)(nil) + _ db.DBWriter = (*badgerWriter)(nil) + _ db.DBReadWriter = (*badgerWriter)(nil) ) // BadgerDB is a connection to a BadgerDB key-value database. @@ -64,7 +64,7 @@ type badgerIterator struct { // commit to see current state. So we must use commit increments that are more // granular than our version interval, and map versions to the corresponding timestamp. type versionManager struct { - *dbm.VersionManager + *db.VersionManager vmap map[uint64]uint64 lastTs uint64 } @@ -86,7 +86,7 @@ func NewDB(dir string) (*BadgerDB, error) { // NewDBWithOptions creates a BadgerDB key-value database with the specified Options // (https://pkg.go.dev/github.com/dgraph-io/badger/v3#Options) func NewDBWithOptions(opts badger.Options) (*BadgerDB, error) { - db, err := badger.OpenManaged(opts) + d, err := badger.OpenManaged(opts) if err != nil { return nil, err } @@ -95,7 +95,7 @@ func NewDBWithOptions(opts badger.Options) (*BadgerDB, error) { return nil, err } return &BadgerDB{ - db: db, + db: d, vmgr: vmgr, }, nil } @@ -133,7 +133,7 @@ func readVersionsFile(path string) (*versionManager, error) { versions = append(versions, version) vmap[version] = ts } - vmgr := dbm.NewVersionManager(versions) + vmgr := db.NewVersionManager(versions) return &versionManager{ VersionManager: vmgr, vmap: vmap, @@ -166,24 +166,24 @@ func writeVersionsFile(vm *versionManager, path string) error { return w.WriteAll(rows) } -func (b *BadgerDB) Reader() dbm.DBReader { +func (b *BadgerDB) Reader() db.DBReader { b.mtx.RLock() ts := b.vmgr.lastTs b.mtx.RUnlock() return &badgerTxn{txn: b.db.NewTransactionAt(ts, false), db: b} } -func (b *BadgerDB) ReaderAt(version uint64) (dbm.DBReader, error) { +func (b *BadgerDB) ReaderAt(version uint64) (db.DBReader, error) { b.mtx.RLock() defer b.mtx.RUnlock() ts, has := b.vmgr.versionTs(version) if !has { - return nil, dbm.ErrVersionDoesNotExist + return nil, db.ErrVersionDoesNotExist } return &badgerTxn{txn: b.db.NewTransactionAt(ts, false), db: b}, nil } -func (b *BadgerDB) ReadWriter() dbm.DBReadWriter { +func (b *BadgerDB) ReadWriter() db.DBReadWriter { atomic.AddInt32(&b.openWriters, 1) b.mtx.RLock() ts := b.vmgr.lastTs @@ -191,7 +191,7 @@ func (b *BadgerDB) ReadWriter() dbm.DBReadWriter { return &badgerWriter{badgerTxn{txn: b.db.NewTransactionAt(ts, true), db: b}, false} } -func (b *BadgerDB) Writer() dbm.DBWriter { +func (b *BadgerDB) Writer() db.DBWriter { // Badger has a WriteBatch, but it doesn't support conflict detection return b.ReadWriter() } @@ -205,7 +205,7 @@ func (b *BadgerDB) Close() error { // Versions implements DBConnection. // Returns a VersionSet that is valid until the next call to SaveVersion or DeleteVersion. -func (b *BadgerDB) Versions() (dbm.VersionSet, error) { +func (b *BadgerDB) Versions() (db.VersionSet, error) { b.mtx.RLock() defer b.mtx.RUnlock() return b.vmgr, nil @@ -215,21 +215,21 @@ func (b *BadgerDB) save(target uint64) (uint64, error) { b.mtx.Lock() defer b.mtx.Unlock() if b.openWriters > 0 { - return 0, dbm.ErrOpenTransactions + return 0, db.ErrOpenTransactions } b.vmgr = b.vmgr.Copy() return b.vmgr.Save(target) } -// SaveVersion implements DBConnection. +// SaveNextVersion implements DBConnection. func (b *BadgerDB) SaveNextVersion() (uint64, error) { return b.save(0) } -// SaveNextVersion implements DBConnection. +// SaveVersion implements DBConnection. func (b *BadgerDB) SaveVersion(target uint64) error { if target == 0 { - return dbm.ErrInvalidVersion + return db.ErrInvalidVersion } _, err := b.save(target) return err @@ -239,7 +239,7 @@ func (b *BadgerDB) DeleteVersion(target uint64) error { b.mtx.Lock() defer b.mtx.Unlock() if !b.vmgr.Exists(target) { - return dbm.ErrVersionDoesNotExist + return db.ErrVersionDoesNotExist } b.vmgr = b.vmgr.Copy() b.vmgr.Delete(target) @@ -250,7 +250,7 @@ func (b *BadgerDB) Revert() error { b.mtx.RLock() defer b.mtx.RUnlock() if b.openWriters > 0 { - return dbm.ErrOpenTransactions + return db.ErrOpenTransactions } // Revert from latest commit timestamp to last "saved" timestamp @@ -327,7 +327,7 @@ func (b *BadgerDB) Stats() map[string]string { return nil } func (tx *badgerTxn) Get(key []byte) ([]byte, error) { if len(key) == 0 { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } item, err := tx.txn.Get(key) @@ -345,7 +345,7 @@ func (tx *badgerTxn) Get(key []byte) ([]byte, error) { func (tx *badgerTxn) Has(key []byte) (bool, error) { if len(key) == 0 { - return false, dbm.ErrKeyEmpty + return false, db.ErrKeyEmpty } _, err := tx.txn.Get(key) @@ -364,7 +364,7 @@ func (tx *badgerWriter) Set(key, value []byte) error { func (tx *badgerWriter) Delete(key []byte) error { if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } return tx.txn.Delete(key) } @@ -398,7 +398,7 @@ func (tx *badgerWriter) Discard() error { func (tx *badgerTxn) iteratorOpts(start, end []byte, opts badger.IteratorOptions) (*badgerIterator, error) { if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } iter := tx.txn.NewIterator(opts) iter.Rewind() @@ -416,12 +416,12 @@ func (tx *badgerTxn) iteratorOpts(start, end []byte, opts badger.IteratorOptions }, nil } -func (tx *badgerTxn) Iterator(start, end []byte) (dbm.Iterator, error) { +func (tx *badgerTxn) Iterator(start, end []byte) (db.Iterator, error) { opts := badger.DefaultIteratorOptions return tx.iteratorOpts(start, end, opts) } -func (tx *badgerTxn) ReverseIterator(start, end []byte) (dbm.Iterator, error) { +func (tx *badgerTxn) ReverseIterator(start, end []byte) (db.Iterator, error) { opts := badger.DefaultIteratorOptions opts.Reverse = true return tx.iteratorOpts(end, start, opts) @@ -484,7 +484,7 @@ func (vm *versionManager) versionTs(ver uint64) (uint64, bool) { // updateCommitTs increments the lastTs if equal to readts. func (vm *versionManager) updateCommitTs(readts uint64) { if vm.lastTs == readts { - vm.lastTs += 1 + vm.lastTs++ } } diff --git a/db/badgerdb/db_test.go b/db/badgerdb/db_test.go index 419f595d60..05d9cc4ba1 100644 --- a/db/badgerdb/db_test.go +++ b/db/badgerdb/db_test.go @@ -5,14 +5,14 @@ import ( "github.com/stretchr/testify/require" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" "github.com/cosmos/cosmos-sdk/db/dbtest" ) -func load(t *testing.T, dir string) dbm.DBConnection { - db, err := NewDB(dir) +func load(t *testing.T, dir string) db.DBConnection { + d, err := NewDB(dir) require.NoError(t, err) - return db + return d } func TestGetSetHasDelete(t *testing.T) { diff --git a/db/go.mod b/db/go.mod index 0010c3c5c8..47bf3c1f44 100644 --- a/db/go.mod +++ b/db/go.mod @@ -3,11 +3,13 @@ go 1.17 module github.com/cosmos/cosmos-sdk/db require ( + // Note: gorocksdb bindings for OptimisticTransactionDB are not merged upstream, so we use a fork + // See https://github.com/tecbot/gorocksdb/pull/216 + github.com/cosmos/gorocksdb v1.2.0 github.com/dgraph-io/badger/v3 v3.2103.2 github.com/dgraph-io/ristretto v0.1.0 github.com/google/btree v1.0.1 github.com/stretchr/testify v1.7.0 - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c ) require ( @@ -30,7 +32,3 @@ require ( google.golang.org/protobuf v1.27.1 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) - -// Note: gorocksdb bindings for OptimisticTransactionDB are not merged upstream, so we use a fork -// See https://github.com/tecbot/gorocksdb/pull/216 -replace github.com/tecbot/gorocksdb => github.com/cosmos/gorocksdb v1.1.1 diff --git a/db/go.sum b/db/go.sum index ed305b1961..3330de31de 100644 --- a/db/go.sum +++ b/db/go.sum @@ -14,8 +14,8 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX 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/cosmos/gorocksdb v1.1.1 h1:N0OqpEKXgsi2qtDm8T1+AlNMXkTm6s1jowYf7/4pH5I= -github.com/cosmos/gorocksdb v1.1.1/go.mod h1:b/U29r/CtguX3TF7mKG1Jjn4APDqh4wECshxXdiWHpA= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/db/memdb/db.go b/db/memdb/db.go index ddae7f74db..f3f50377c7 100644 --- a/db/memdb/db.go +++ b/db/memdb/db.go @@ -6,7 +6,7 @@ import ( "sync" "sync/atomic" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" dbutil "github.com/cosmos/cosmos-sdk/db/internal" "github.com/google/btree" ) @@ -32,7 +32,7 @@ type MemDB struct { btree *btree.BTree // Main contents mtx sync.RWMutex // Guards version history saved map[uint64]*btree.BTree // Past versions - vmgr *dbm.VersionManager // Mirrors version keys + vmgr *db.VersionManager // Mirrors version keys openWriters int32 // Open writers } @@ -43,10 +43,10 @@ type dbTxn struct { type dbWriter struct{ dbTxn } var ( - _ dbm.DBConnection = (*MemDB)(nil) - _ dbm.DBReader = (*dbTxn)(nil) - _ dbm.DBWriter = (*dbWriter)(nil) - _ dbm.DBReadWriter = (*dbWriter)(nil) + _ db.DBConnection = (*MemDB)(nil) + _ db.DBReader = (*dbTxn)(nil) + _ db.DBWriter = (*dbWriter)(nil) + _ db.DBReadWriter = (*dbWriter)(nil) ) // item is a btree.Item with byte slices as keys and values @@ -60,127 +60,127 @@ func NewDB() *MemDB { return &MemDB{ btree: btree.New(bTreeDegree), saved: make(map[uint64]*btree.BTree), - vmgr: dbm.NewVersionManager(nil), + vmgr: db.NewVersionManager(nil), } } -func (db *MemDB) newTxn(tree *btree.BTree) dbTxn { - return dbTxn{tree, db} +func (dbm *MemDB) newTxn(tree *btree.BTree) dbTxn { + return dbTxn{tree, dbm} } // Close implements DB. // Close is a noop since for an in-memory database, we don't have a destination to flush // contents to nor do we want any data loss on invoking Close(). // See the discussion in https://github.com/tendermint/tendermint/libs/pull/56 -func (db *MemDB) Close() error { +func (dbm *MemDB) Close() error { return nil } // Versions implements DBConnection. -func (db *MemDB) Versions() (dbm.VersionSet, error) { - db.mtx.RLock() - defer db.mtx.RUnlock() - return db.vmgr, nil +func (dbm *MemDB) Versions() (db.VersionSet, error) { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() + return dbm.vmgr, nil } // Reader implements DBConnection. -func (db *MemDB) Reader() dbm.DBReader { - db.mtx.RLock() - defer db.mtx.RUnlock() - ret := db.newTxn(db.btree) +func (dbm *MemDB) Reader() db.DBReader { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() + ret := dbm.newTxn(dbm.btree) return &ret } // ReaderAt implements DBConnection. -func (db *MemDB) ReaderAt(version uint64) (dbm.DBReader, error) { - db.mtx.RLock() - defer db.mtx.RUnlock() - tree, ok := db.saved[version] +func (dbm *MemDB) ReaderAt(version uint64) (db.DBReader, error) { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() + tree, ok := dbm.saved[version] if !ok { - return nil, dbm.ErrVersionDoesNotExist + return nil, db.ErrVersionDoesNotExist } - ret := db.newTxn(tree) + ret := dbm.newTxn(tree) return &ret, nil } // Writer implements DBConnection. -func (db *MemDB) Writer() dbm.DBWriter { - return db.ReadWriter() +func (dbm *MemDB) Writer() db.DBWriter { + return dbm.ReadWriter() } // ReadWriter implements DBConnection. -func (db *MemDB) ReadWriter() dbm.DBReadWriter { - db.mtx.RLock() - defer db.mtx.RUnlock() - atomic.AddInt32(&db.openWriters, 1) +func (dbm *MemDB) ReadWriter() db.DBReadWriter { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() + atomic.AddInt32(&dbm.openWriters, 1) // Clone creates a copy-on-write extension of the current tree - return &dbWriter{db.newTxn(db.btree.Clone())} + return &dbWriter{dbm.newTxn(dbm.btree.Clone())} } -func (db *MemDB) save(target uint64) (uint64, error) { - db.mtx.Lock() - defer db.mtx.Unlock() - if db.openWriters > 0 { - return 0, dbm.ErrOpenTransactions +func (dbm *MemDB) save(target uint64) (uint64, error) { + dbm.mtx.Lock() + defer dbm.mtx.Unlock() + if dbm.openWriters > 0 { + return 0, db.ErrOpenTransactions } - newVmgr := db.vmgr.Copy() + newVmgr := dbm.vmgr.Copy() target, err := newVmgr.Save(target) if err != nil { return 0, err } - db.saved[target] = db.btree - db.vmgr = newVmgr + dbm.saved[target] = dbm.btree + dbm.vmgr = newVmgr return target, nil } // SaveVersion implements DBConnection. -func (db *MemDB) SaveNextVersion() (uint64, error) { - return db.save(0) +func (dbm *MemDB) SaveNextVersion() (uint64, error) { + return dbm.save(0) } // SaveNextVersion implements DBConnection. -func (db *MemDB) SaveVersion(target uint64) error { +func (dbm *MemDB) SaveVersion(target uint64) error { if target == 0 { - return dbm.ErrInvalidVersion + return db.ErrInvalidVersion } - _, err := db.save(target) + _, err := dbm.save(target) return err } // DeleteVersion implements DBConnection. -func (db *MemDB) DeleteVersion(target uint64) error { - db.mtx.Lock() - defer db.mtx.Unlock() - if _, has := db.saved[target]; !has { - return dbm.ErrVersionDoesNotExist +func (dbm *MemDB) DeleteVersion(target uint64) error { + dbm.mtx.Lock() + defer dbm.mtx.Unlock() + if _, has := dbm.saved[target]; !has { + return db.ErrVersionDoesNotExist } - delete(db.saved, target) - db.vmgr = db.vmgr.Copy() - db.vmgr.Delete(target) + delete(dbm.saved, target) + dbm.vmgr = dbm.vmgr.Copy() + dbm.vmgr.Delete(target) return nil } -func (db *MemDB) Revert() error { - db.mtx.RLock() - defer db.mtx.RUnlock() - if db.openWriters > 0 { - return dbm.ErrOpenTransactions +func (dbm *MemDB) Revert() error { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() + if dbm.openWriters > 0 { + return db.ErrOpenTransactions } - last := db.vmgr.Last() + last := dbm.vmgr.Last() if last == 0 { - db.btree = btree.New(bTreeDegree) + dbm.btree = btree.New(bTreeDegree) return nil } var has bool - db.btree, has = db.saved[last] + dbm.btree, has = dbm.saved[last] if !has { return fmt.Errorf("bad version history: version %v not saved", last) } - for ver, _ := range db.saved { + for ver, _ := range dbm.saved { if ver > last { - delete(db.saved, ver) + delete(dbm.saved, ver) } } return nil @@ -189,10 +189,10 @@ func (db *MemDB) Revert() error { // Get implements DBReader. func (tx *dbTxn) Get(key []byte) ([]byte, error) { if tx.btree == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if len(key) == 0 { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } i := tx.btree.Get(newKey(key)) if i != nil { @@ -204,10 +204,10 @@ func (tx *dbTxn) Get(key []byte) ([]byte, error) { // Has implements DBReader. func (tx *dbTxn) Has(key []byte) (bool, error) { if tx.btree == nil { - return false, dbm.ErrTransactionClosed + return false, db.ErrTransactionClosed } if len(key) == 0 { - return false, dbm.ErrKeyEmpty + return false, db.ErrKeyEmpty } return tx.btree.Has(newKey(key)), nil } @@ -215,7 +215,7 @@ func (tx *dbTxn) Has(key []byte) (bool, error) { // Set implements DBWriter. func (tx *dbWriter) Set(key []byte, value []byte) error { if tx.btree == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } if err := dbutil.ValidateKv(key, value); err != nil { return err @@ -227,10 +227,10 @@ func (tx *dbWriter) Set(key []byte, value []byte) error { // Delete implements DBWriter. func (tx *dbWriter) Delete(key []byte) error { if tx.btree == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } tx.btree.Delete(newKey(key)) return nil @@ -238,24 +238,24 @@ func (tx *dbWriter) Delete(key []byte) error { // Iterator implements DBReader. // Takes out a read-lock on the database until the iterator is closed. -func (tx *dbTxn) Iterator(start, end []byte) (dbm.Iterator, error) { +func (tx *dbTxn) Iterator(start, end []byte) (db.Iterator, error) { if tx.btree == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } return newMemDBIterator(tx, start, end, false), nil } // ReverseIterator implements DBReader. // Takes out a read-lock on the database until the iterator is closed. -func (tx *dbTxn) ReverseIterator(start, end []byte) (dbm.Iterator, error) { +func (tx *dbTxn) ReverseIterator(start, end []byte) (db.Iterator, error) { if tx.btree == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } return newMemDBIterator(tx, start, end, true), nil } @@ -263,7 +263,7 @@ func (tx *dbTxn) ReverseIterator(start, end []byte) (dbm.Iterator, error) { // Commit implements DBWriter. func (tx *dbWriter) Commit() error { if tx.btree == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } tx.db.mtx.Lock() defer tx.db.mtx.Unlock() @@ -288,11 +288,11 @@ func (tx *dbWriter) Discard() error { } // Print prints the database contents. -func (db *MemDB) Print() error { - db.mtx.RLock() - defer db.mtx.RUnlock() +func (dbm *MemDB) Print() error { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() - db.btree.Ascend(func(i btree.Item) bool { + dbm.btree.Ascend(func(i btree.Item) bool { item := i.(*item) fmt.Printf("[%X]:\t[%X]\n", item.key, item.value) return true @@ -301,13 +301,13 @@ func (db *MemDB) Print() error { } // Stats implements DBConnection. -func (db *MemDB) Stats() map[string]string { - db.mtx.RLock() - defer db.mtx.RUnlock() +func (dbm *MemDB) Stats() map[string]string { + dbm.mtx.RLock() + defer dbm.mtx.RUnlock() stats := make(map[string]string) stats["database.type"] = "memDB" - stats["database.size"] = fmt.Sprintf("%d", db.btree.Len()) + stats["database.size"] = fmt.Sprintf("%d", dbm.btree.Len()) return stats } diff --git a/db/memdb/db_test.go b/db/memdb/db_test.go index cd5bd89081..bef42d92a8 100644 --- a/db/memdb/db_test.go +++ b/db/memdb/db_test.go @@ -3,32 +3,32 @@ package memdb import ( "testing" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" "github.com/cosmos/cosmos-sdk/db/dbtest" ) func BenchmarkMemDBRangeScans1M(b *testing.B) { - db := NewDB() - defer db.Close() + dbm := NewDB() + defer dbm.Close() - dbtest.BenchmarkRangeScans(b, db.ReadWriter(), int64(1e6)) + dbtest.BenchmarkRangeScans(b, dbm.ReadWriter(), int64(1e6)) } func BenchmarkMemDBRangeScans10M(b *testing.B) { - db := NewDB() - defer db.Close() + dbm := NewDB() + defer dbm.Close() - dbtest.BenchmarkRangeScans(b, db.ReadWriter(), int64(10e6)) + dbtest.BenchmarkRangeScans(b, dbm.ReadWriter(), int64(10e6)) } func BenchmarkMemDBRandomReadsWrites(b *testing.B) { - db := NewDB() - defer db.Close() + dbm := NewDB() + defer dbm.Close() - dbtest.BenchmarkRandomReadsWrites(b, db.ReadWriter()) + dbtest.BenchmarkRandomReadsWrites(b, dbm.ReadWriter()) } -func load(t *testing.T, _ string) dbm.DBConnection { +func load(t *testing.T, _ string) db.DBConnection { return NewDB() } diff --git a/db/memdb/iterator.go b/db/memdb/iterator.go index fad55c7929..7d2f897211 100644 --- a/db/memdb/iterator.go +++ b/db/memdb/iterator.go @@ -4,7 +4,7 @@ import ( "bytes" "context" - tmdb "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" "github.com/google/btree" ) @@ -24,7 +24,7 @@ type memDBIterator struct { end []byte } -var _ tmdb.Iterator = (*memDBIterator)(nil) +var _ db.Iterator = (*memDBIterator)(nil) // newMemDBIterator creates a new memDBIterator. // A visitor is passed to the btree which streams items to the iterator over a channel. Advancing diff --git a/db/prefix/prefix.go b/db/prefix/prefix.go index 52f044d18b..c6ed87cba8 100644 --- a/db/prefix/prefix.go +++ b/db/prefix/prefix.go @@ -3,55 +3,55 @@ package prefix import ( - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" ) // prefixed Reader type prefixR struct { - db dbm.DBReader + db db.DBReader prefix []byte } // prefixed ReadWriter type prefixRW struct { - db dbm.DBReadWriter + db db.DBReadWriter prefix []byte } // prefixed Writer type prefixW struct { - db dbm.DBWriter + db db.DBWriter prefix []byte } -var _ dbm.DBReader = (*prefixR)(nil) -var _ dbm.DBReadWriter = (*prefixRW)(nil) -var _ dbm.DBWriter = (*prefixW)(nil) +var _ db.DBReader = (*prefixR)(nil) +var _ db.DBReadWriter = (*prefixRW)(nil) +var _ db.DBWriter = (*prefixW)(nil) // NewPrefixReader returns a DBReader that only has access to the subset of DB keys // that contain the given prefix. -func NewPrefixReader(db dbm.DBReader, prefix []byte) prefixR { +func NewPrefixReader(dbr db.DBReader, prefix []byte) prefixR { return prefixR{ prefix: prefix, - db: db, + db: dbr, } } // NewPrefixReadWriter returns a DBReader that only has access to the subset of DB keys // that contain the given prefix. -func NewPrefixReadWriter(db dbm.DBReadWriter, prefix []byte) prefixRW { +func NewPrefixReadWriter(dbrw db.DBReadWriter, prefix []byte) prefixRW { return prefixRW{ prefix: prefix, - db: db, + db: dbrw, } } // NewPrefixWriter returns a DBWriter that reads/writes only from the subset of DB keys // that contain the given prefix -func NewPrefixWriter(db dbm.DBWriter, prefix []byte) prefixW { +func NewPrefixWriter(dbw db.DBWriter, prefix []byte) prefixW { return prefixW{ prefix: prefix, - db: db, + db: dbw, } } @@ -62,7 +62,7 @@ func prefixed(prefix, key []byte) []byte { // Get implements DBReader. func (pdb prefixR) Get(key []byte) ([]byte, error) { if len(key) == 0 { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } return pdb.db.Get(prefixed(pdb.prefix, key)) } @@ -70,15 +70,15 @@ func (pdb prefixR) Get(key []byte) ([]byte, error) { // Has implements DBReader. func (pdb prefixR) Has(key []byte) (bool, error) { if len(key) == 0 { - return false, dbm.ErrKeyEmpty + return false, db.ErrKeyEmpty } return pdb.db.Has(prefixed(pdb.prefix, key)) } // Iterator implements DBReader. -func (pdb prefixR) Iterator(start, end []byte) (dbm.Iterator, error) { +func (pdb prefixR) Iterator(start, end []byte) (db.Iterator, error) { if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } var pend []byte @@ -95,9 +95,9 @@ func (pdb prefixR) Iterator(start, end []byte) (dbm.Iterator, error) { } // ReverseIterator implements DBReader. -func (pdb prefixR) ReverseIterator(start, end []byte) (dbm.Iterator, error) { +func (pdb prefixR) ReverseIterator(start, end []byte) (db.Iterator, error) { if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } var pend []byte @@ -119,7 +119,7 @@ func (pdb prefixR) Discard() error { return pdb.db.Discard() } // Set implements DBReadWriter. func (pdb prefixRW) Set(key []byte, value []byte) error { if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } return pdb.db.Set(prefixed(pdb.prefix, key), value) } @@ -127,7 +127,7 @@ func (pdb prefixRW) Set(key []byte, value []byte) error { // Delete implements DBReadWriter. func (pdb prefixRW) Delete(key []byte) error { if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } return pdb.db.Delete(prefixed(pdb.prefix, key)) } @@ -143,12 +143,12 @@ func (pdb prefixRW) Has(key []byte) (bool, error) { } // Iterator implements DBReadWriter. -func (pdb prefixRW) Iterator(start, end []byte) (dbm.Iterator, error) { +func (pdb prefixRW) Iterator(start, end []byte) (db.Iterator, error) { return NewPrefixReader(pdb.db, pdb.prefix).Iterator(start, end) } // ReverseIterator implements DBReadWriter. -func (pdb prefixRW) ReverseIterator(start, end []byte) (dbm.Iterator, error) { +func (pdb prefixRW) ReverseIterator(start, end []byte) (db.Iterator, error) { return NewPrefixReader(pdb.db, pdb.prefix).ReverseIterator(start, end) } @@ -161,7 +161,7 @@ func (pdb prefixRW) Discard() error { return pdb.db.Discard() } // Set implements DBReadWriter. func (pdb prefixW) Set(key []byte, value []byte) error { if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } return pdb.db.Set(prefixed(pdb.prefix, key), value) } @@ -169,7 +169,7 @@ func (pdb prefixW) Set(key []byte, value []byte) error { // Delete implements DBWriter. func (pdb prefixW) Delete(key []byte) error { if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } return pdb.db.Delete(prefixed(pdb.prefix, key)) } diff --git a/db/prefix/prefix_iterator.go b/db/prefix/prefix_iterator.go index 0b7f1c09ef..e7c2239dc0 100644 --- a/db/prefix/prefix_iterator.go +++ b/db/prefix/prefix_iterator.go @@ -4,18 +4,18 @@ import ( "bytes" "fmt" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" ) // IteratePrefix is a convenience function for iterating over a key domain // restricted by prefix. -func IteratePrefix(db dbm.DBReader, prefix []byte) (dbm.Iterator, error) { +func IteratePrefix(dbr db.DBReader, prefix []byte) (db.Iterator, error) { var start, end []byte if len(prefix) != 0 { start = prefix end = cpIncr(prefix) } - itr, err := db.Iterator(start, end) + itr, err := dbr.Iterator(start, end) if err != nil { return nil, err } @@ -27,13 +27,13 @@ type prefixDBIterator struct { prefix []byte start []byte end []byte - source dbm.Iterator + source db.Iterator err error } -var _ dbm.Iterator = (*prefixDBIterator)(nil) +var _ db.Iterator = (*prefixDBIterator)(nil) -func newPrefixIterator(prefix, start, end []byte, source dbm.Iterator) *prefixDBIterator { +func newPrefixIterator(prefix, start, end []byte, source db.Iterator) *prefixDBIterator { return &prefixDBIterator{ prefix: prefix, start: start, diff --git a/db/prefix/prefix_test.go b/db/prefix/prefix_test.go index 2a09eaf4e6..5394e75849 100644 --- a/db/prefix/prefix_test.go +++ b/db/prefix/prefix_test.go @@ -5,13 +5,13 @@ import ( "github.com/stretchr/testify/require" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" "github.com/cosmos/cosmos-sdk/db/dbtest" "github.com/cosmos/cosmos-sdk/db/memdb" pfx "github.com/cosmos/cosmos-sdk/db/prefix" ) -func fillDBWithStuff(t *testing.T, dbw dbm.DBWriter) { +func fillDBWithStuff(t *testing.T, dbw db.DBWriter) { // Under "key" prefix require.NoError(t, dbw.Set([]byte("key"), []byte("value"))) require.NoError(t, dbw.Set([]byte("key1"), []byte("value1"))) @@ -24,14 +24,14 @@ func fillDBWithStuff(t *testing.T, dbw dbm.DBWriter) { require.NoError(t, dbw.Commit()) } -func mockDBWithStuff(t *testing.T) dbm.DBConnection { - db := memdb.NewDB() - fillDBWithStuff(t, db.Writer()) - return db +func mockDBWithStuff(t *testing.T) db.DBConnection { + dbm := memdb.NewDB() + fillDBWithStuff(t, dbm.Writer()) + return dbm } -func makePrefixReader(t *testing.T, db dbm.DBConnection, pre []byte) dbm.DBReader { - view := db.Reader() +func makePrefixReader(t *testing.T, dbc db.DBConnection, pre []byte) db.DBReader { + view := dbc.Reader() require.NotNil(t, view) return pfx.NewPrefixReader(view, pre) } @@ -133,18 +133,18 @@ func TestPrefixDBReverseIterator7(t *testing.T) { func TestPrefixDBViewVersion(t *testing.T) { prefix := []byte("key") - db := memdb.NewDB() - fillDBWithStuff(t, db.Writer()) - id, err := db.SaveNextVersion() + dbm := memdb.NewDB() + fillDBWithStuff(t, dbm.Writer()) + id, err := dbm.SaveNextVersion() require.NoError(t, err) - pdb := pfx.NewPrefixReadWriter(db.ReadWriter(), prefix) + pdb := pfx.NewPrefixReadWriter(dbm.ReadWriter(), prefix) pdb.Set([]byte("1"), []byte("newvalue1")) pdb.Delete([]byte("2")) pdb.Set([]byte("4"), []byte("newvalue4")) pdb.Discard() - dbview, err := db.ReaderAt(id) + dbview, err := dbm.ReaderAt(id) require.NotNil(t, dbview) require.NoError(t, err) view := pfx.NewPrefixReader(dbview, prefix) diff --git a/db/rocksdb/batch.go b/db/rocksdb/batch.go index 54be2ec2ad..7e19cae46d 100644 --- a/db/rocksdb/batch.go +++ b/db/rocksdb/batch.go @@ -5,9 +5,9 @@ package rocksdb import ( "sync/atomic" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" dbutil "github.com/cosmos/cosmos-sdk/db/internal" - "github.com/tecbot/gorocksdb" + "github.com/cosmos/gorocksdb" ) type rocksDBBatch struct { @@ -15,7 +15,7 @@ type rocksDBBatch struct { mgr *dbManager } -var _ dbm.DBWriter = (*rocksDBBatch)(nil) +var _ db.DBWriter = (*rocksDBBatch)(nil) func (mgr *dbManager) newRocksDBBatch() *rocksDBBatch { return &rocksDBBatch{ @@ -30,7 +30,7 @@ func (b *rocksDBBatch) Set(key, value []byte) error { return err } if b.batch == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } b.batch.Put(key, value) return nil @@ -39,10 +39,10 @@ func (b *rocksDBBatch) Set(key, value []byte) error { // Delete implements DBWriter. func (b *rocksDBBatch) Delete(key []byte) error { if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } if b.batch == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } b.batch.Delete(key) return nil @@ -51,7 +51,7 @@ func (b *rocksDBBatch) Delete(key []byte) error { // Write implements DBWriter. func (b *rocksDBBatch) Commit() (err error) { if b.batch == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } defer func() { err = dbutil.CombineErrors(err, b.Discard(), "Discard also failed") }() err = b.mgr.current.Write(b.mgr.opts.wo, b.batch) diff --git a/db/rocksdb/db.go b/db/rocksdb/db.go index 058bf9a5fc..cb312b625f 100644 --- a/db/rocksdb/db.go +++ b/db/rocksdb/db.go @@ -11,9 +11,9 @@ import ( "sync" "sync/atomic" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" dbutil "github.com/cosmos/cosmos-sdk/db/internal" - "github.com/tecbot/gorocksdb" + "github.com/cosmos/gorocksdb" ) var ( @@ -22,10 +22,10 @@ var ( ) var ( - _ dbm.DBConnection = (*RocksDB)(nil) - _ dbm.DBReader = (*dbTxn)(nil) - _ dbm.DBWriter = (*dbWriter)(nil) - _ dbm.DBReadWriter = (*dbWriter)(nil) + _ db.DBConnection = (*RocksDB)(nil) + _ db.DBReader = (*dbTxn)(nil) + _ db.DBWriter = (*dbWriter)(nil) + _ db.DBReadWriter = (*dbWriter)(nil) ) // RocksDB is a connection to a RocksDB key-value database. @@ -35,7 +35,7 @@ type dbManager struct { current *dbConnection dir string opts dbOptions - vmgr *dbm.VersionManager + vmgr *db.VersionManager mtx sync.RWMutex // Track open DBWriters openWriters int32 @@ -129,7 +129,7 @@ func (mgr *dbManager) checkpointsDir() string { } // Reads directory for checkpoints files -func readVersions(dir string) (*dbm.VersionManager, error) { +func readVersions(dir string) (*db.VersionManager, error) { files, err := os.ReadDir(dir) if err != nil { return nil, err @@ -142,18 +142,18 @@ func readVersions(dir string) (*dbm.VersionManager, error) { } versions = append(versions, version) } - return dbm.NewVersionManager(versions), nil + return db.NewVersionManager(versions), nil } func (mgr *dbManager) checkpointPath(version uint64) (string, error) { dbPath := filepath.Join(mgr.checkpointsDir(), fmt.Sprintf(checkpointFileFormat, version)) if stat, err := os.Stat(dbPath); err != nil { if errors.Is(err, os.ErrNotExist) { - err = dbm.ErrVersionDoesNotExist + err = db.ErrVersionDoesNotExist } return "", err } else if !stat.IsDir() { - return "", dbm.ErrVersionDoesNotExist + return "", db.ErrVersionDoesNotExist } return dbPath, nil } @@ -178,7 +178,7 @@ func (mgr *dbManager) openCheckpoint(version uint64) (*dbConnection, error) { return db, nil } -func (mgr *dbManager) Reader() dbm.DBReader { +func (mgr *dbManager) Reader() db.DBReader { mgr.mtx.RLock() defer mgr.mtx.RUnlock() return &dbTxn{ @@ -189,22 +189,22 @@ func (mgr *dbManager) Reader() dbm.DBReader { } } -func (mgr *dbManager) ReaderAt(version uint64) (dbm.DBReader, error) { +func (mgr *dbManager) ReaderAt(version uint64) (db.DBReader, error) { mgr.mtx.RLock() defer mgr.mtx.RUnlock() - db, err := mgr.openCheckpoint(version) + d, err := mgr.openCheckpoint(version) if err != nil { return nil, err } return &dbTxn{ - txn: db.TransactionBegin(mgr.opts.wo, mgr.opts.txo, nil), + txn: d.TransactionBegin(mgr.opts.wo, mgr.opts.txo, nil), mgr: mgr, version: version, }, nil } -func (mgr *dbManager) ReadWriter() dbm.DBReadWriter { +func (mgr *dbManager) ReadWriter() db.DBReadWriter { mgr.mtx.RLock() defer mgr.mtx.RUnlock() atomic.AddInt32(&mgr.openWriters, 1) @@ -214,14 +214,14 @@ func (mgr *dbManager) ReadWriter() dbm.DBReadWriter { }} } -func (mgr *dbManager) Writer() dbm.DBWriter { +func (mgr *dbManager) Writer() db.DBWriter { mgr.mtx.RLock() defer mgr.mtx.RUnlock() atomic.AddInt32(&mgr.openWriters, 1) return mgr.newRocksDBBatch() } -func (mgr *dbManager) Versions() (dbm.VersionSet, error) { +func (mgr *dbManager) Versions() (db.VersionSet, error) { mgr.mtx.RLock() defer mgr.mtx.RUnlock() return mgr.vmgr, nil @@ -235,7 +235,7 @@ func (mgr *dbManager) SaveNextVersion() (uint64, error) { // SaveVersion implements DBConnection. func (mgr *dbManager) SaveVersion(target uint64) error { if target == 0 { - return dbm.ErrInvalidVersion + return db.ErrInvalidVersion } _, err := mgr.save(target) return err @@ -245,7 +245,7 @@ func (mgr *dbManager) save(target uint64) (uint64, error) { mgr.mtx.Lock() defer mgr.mtx.Unlock() if mgr.openWriters > 0 { - return 0, dbm.ErrOpenTransactions + return 0, db.ErrOpenTransactions } newVmgr := mgr.vmgr.Copy() target, err := newVmgr.Save(target) @@ -267,7 +267,7 @@ func (mgr *dbManager) save(target uint64) (uint64, error) { func (mgr *dbManager) DeleteVersion(ver uint64) error { if mgr.cpCache.has(ver) { - return dbm.ErrOpenTransactions + return db.ErrOpenTransactions } mgr.mtx.Lock() defer mgr.mtx.Unlock() @@ -284,7 +284,7 @@ func (mgr *dbManager) Revert() (err error) { mgr.mtx.RLock() defer mgr.mtx.RUnlock() if mgr.openWriters > 0 { - return dbm.ErrOpenTransactions + return db.ErrOpenTransactions } // Close current connection and replace it with a checkpoint (created from the last checkpoint) mgr.current.Close() @@ -341,10 +341,10 @@ func (mgr *dbManager) Stats() map[string]string { // Get implements DBReader. func (tx *dbTxn) Get(key []byte) ([]byte, error) { if tx.txn == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if len(key) == 0 { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } res, err := tx.txn.Get(tx.mgr.opts.ro, key) if err != nil { @@ -356,10 +356,10 @@ func (tx *dbTxn) Get(key []byte) ([]byte, error) { // Get implements DBReader. func (tx *dbWriter) Get(key []byte) ([]byte, error) { if tx.txn == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if len(key) == 0 { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } res, err := tx.txn.GetForUpdate(tx.mgr.opts.ro, key) if err != nil { @@ -380,7 +380,7 @@ func (tx *dbTxn) Has(key []byte) (bool, error) { // Set implements DBWriter. func (tx *dbWriter) Set(key []byte, value []byte) error { if tx.txn == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } if err := dbutil.ValidateKv(key, value); err != nil { return err @@ -391,17 +391,17 @@ func (tx *dbWriter) Set(key []byte, value []byte) error { // Delete implements DBWriter. func (tx *dbWriter) Delete(key []byte) error { if tx.txn == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } if len(key) == 0 { - return dbm.ErrKeyEmpty + return db.ErrKeyEmpty } return tx.txn.Delete(key) } func (tx *dbWriter) Commit() (err error) { if tx.txn == nil { - return dbm.ErrTransactionClosed + return db.ErrTransactionClosed } defer func() { err = dbutil.CombineErrors(err, tx.Discard(), "Discard also failed") }() err = tx.txn.Commit() @@ -430,24 +430,24 @@ func (tx *dbWriter) Discard() error { } // Iterator implements DBReader. -func (tx *dbTxn) Iterator(start, end []byte) (dbm.Iterator, error) { +func (tx *dbTxn) Iterator(start, end []byte) (db.Iterator, error) { if tx.txn == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } itr := tx.txn.NewIterator(tx.mgr.opts.ro) return newRocksDBIterator(itr, start, end, false), nil } // ReverseIterator implements DBReader. -func (tx *dbTxn) ReverseIterator(start, end []byte) (dbm.Iterator, error) { +func (tx *dbTxn) ReverseIterator(start, end []byte) (db.Iterator, error) { if tx.txn == nil { - return nil, dbm.ErrTransactionClosed + return nil, db.ErrTransactionClosed } if (start != nil && len(start) == 0) || (end != nil && len(end) == 0) { - return nil, dbm.ErrKeyEmpty + return nil, db.ErrKeyEmpty } itr := tx.txn.NewIterator(tx.mgr.opts.ro) return newRocksDBIterator(itr, start, end, true), nil diff --git a/db/rocksdb/db_test.go b/db/rocksdb/db_test.go index d1d8f19267..b6268c1ed5 100644 --- a/db/rocksdb/db_test.go +++ b/db/rocksdb/db_test.go @@ -9,14 +9,14 @@ import ( "github.com/stretchr/testify/require" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" "github.com/cosmos/cosmos-sdk/db/dbtest" ) -func load(t *testing.T, dir string) dbm.DBConnection { - db, err := NewDB(dir) +func load(t *testing.T, dir string) db.DBConnection { + d, err := NewDB(dir) require.NoError(t, err) - return db + return d } func TestGetSetHasDelete(t *testing.T) { @@ -47,26 +47,26 @@ func TestReloadDB(t *testing.T) { // Test that the DB can be reloaded after a failed Revert func TestRevertRecovery(t *testing.T) { dir := t.TempDir() - db, err := NewDB(dir) + d, err := NewDB(dir) require.NoError(t, err) - txn := db.Writer() + txn := d.Writer() require.NoError(t, txn.Set([]byte{1}, []byte{1})) require.NoError(t, txn.Commit()) - _, err = db.SaveNextVersion() + _, err = d.SaveNextVersion() require.NoError(t, err) - txn = db.Writer() + txn = d.Writer() require.NoError(t, txn.Set([]byte{2}, []byte{2})) require.NoError(t, txn.Commit()) // move checkpoints dir temporarily to trigger an error hideDir := filepath.Join(dir, "hide_checkpoints") - require.NoError(t, os.Rename(db.checkpointsDir(), hideDir)) - require.Error(t, db.Revert()) - require.NoError(t, os.Rename(hideDir, db.checkpointsDir())) + require.NoError(t, os.Rename(d.checkpointsDir(), hideDir)) + require.Error(t, d.Revert()) + require.NoError(t, os.Rename(hideDir, d.checkpointsDir())) - db, err = NewDB(dir) + d, err = NewDB(dir) require.NoError(t, err) - view := db.Reader() + view := d.Reader() val, err := view.Get([]byte{1}) require.NoError(t, err) require.Equal(t, []byte{1}, val) diff --git a/db/rocksdb/iterator.go b/db/rocksdb/iterator.go index c0b83778e2..e760c7507e 100644 --- a/db/rocksdb/iterator.go +++ b/db/rocksdb/iterator.go @@ -5,8 +5,8 @@ package rocksdb import ( "bytes" - dbm "github.com/cosmos/cosmos-sdk/db" - "github.com/tecbot/gorocksdb" + "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/gorocksdb" ) type rocksDBIterator struct { @@ -18,7 +18,7 @@ type rocksDBIterator struct { primed bool } -var _ dbm.Iterator = (*rocksDBIterator)(nil) +var _ db.Iterator = (*rocksDBIterator)(nil) func newRocksDBIterator(source *gorocksdb.Iterator, start, end []byte, isReverse bool) *rocksDBIterator { if isReverse { diff --git a/db/version_manager_test.go b/db/version_manager_test.go index f78512565c..6575c7e175 100644 --- a/db/version_manager_test.go +++ b/db/version_manager_test.go @@ -6,12 +6,12 @@ import ( "github.com/stretchr/testify/require" - dbm "github.com/cosmos/cosmos-sdk/db" + "github.com/cosmos/cosmos-sdk/db" ) // Test that VersionManager satisfies the behavior of VersionSet func TestVersionManager(t *testing.T) { - vm := dbm.NewVersionManager(nil) + vm := db.NewVersionManager(nil) require.Equal(t, uint64(0), vm.Last()) require.Equal(t, 0, vm.Count()) require.True(t, vm.Equal(vm)) @@ -54,6 +54,6 @@ func TestVersionManager(t *testing.T) { require.NoError(t, err) require.False(t, vm.Exists(id5)) // true copy is made - vm2 := dbm.NewVersionManager([]uint64{id2, id3}) + vm2 := db.NewVersionManager([]uint64{id2, id3}) require.True(t, vm.Equal(vm2)) } diff --git a/go.mod b/go.mod index 74142b8c24..e7efd0c930 100644 --- a/go.mod +++ b/go.mod @@ -77,6 +77,8 @@ require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect + github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect + github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/go-kit/kit v0.12.0 // indirect diff --git a/go.sum b/go.sum index e842036880..49cd71567f 100644 --- a/go.sum +++ b/go.sum @@ -288,6 +288,7 @@ github.com/cosmos/cosmos-sdk/errors v1.0.0-beta.2/go.mod h1:Gi7pzVRnvZ1N16JAXpLA github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= @@ -371,12 +372,14 @@ github.com/esimonov/ifshort v1.0.3/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+ github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= diff --git a/x/group/go.sum b/x/group/go.sum index ace3dbef41..920703d4ad 100644 --- a/x/group/go.sum +++ b/x/group/go.sum @@ -280,6 +280,7 @@ github.com/cosmos/cosmos-sdk/errors v1.0.0-beta.2/go.mod h1:Gi7pzVRnvZ1N16JAXpLA github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.17.3 h1:s2N819a2olOmiauVa0WAhoIJq9EhSXE9HDBAoR9k+8Y= github.com/cosmos/iavl v0.17.3/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= @@ -350,12 +351,14 @@ github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E github.com/esimonov/ifshort v1.0.3/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ethereum/go-ethereum v1.10.13/go.mod h1:W3yfrFyL9C1pHcwY5hmRHVDaorTiQxhYBkKyu5mEDHw= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=