feat: replace the cosmos-db.DB interface with core/store interface (#21450)
This commit is contained in:
Vendored
+5
-6
@@ -13,11 +13,10 @@ import (
|
||||
"cosmossdk.io/store/cachekv"
|
||||
iavlstore "cosmossdk.io/store/iavl"
|
||||
"cosmossdk.io/store/types"
|
||||
"cosmossdk.io/store/wrapper"
|
||||
)
|
||||
|
||||
func TestGetOrSetStoreCache(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
|
||||
|
||||
sKey := types.NewKVStoreKey("test")
|
||||
@@ -30,7 +29,7 @@ func TestGetOrSetStoreCache(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUnwrap(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
|
||||
|
||||
sKey := types.NewKVStoreKey("test")
|
||||
@@ -43,7 +42,7 @@ func TestUnwrap(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestStoreCache(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
|
||||
|
||||
sKey := types.NewKVStoreKey("test")
|
||||
@@ -69,7 +68,7 @@ func TestStoreCache(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestReset(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
|
||||
|
||||
sKey := types.NewKVStoreKey("test")
|
||||
@@ -89,7 +88,7 @@ func TestReset(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCacheWrap(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
|
||||
|
||||
sKey := types.NewKVStoreKey("test")
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/math/unsafe"
|
||||
"cosmossdk.io/store/cachekv"
|
||||
"cosmossdk.io/store/dbadapter"
|
||||
@@ -465,7 +466,7 @@ func randInt(n int) int {
|
||||
}
|
||||
|
||||
// useful for replaying a error case if we find one
|
||||
func doOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, op int, args ...int) {
|
||||
func doOp(t *testing.T, st types.CacheKVStore, truth corestore.KVStoreWithBatch, op int, args ...int) {
|
||||
t.Helper()
|
||||
switch op {
|
||||
case opSet:
|
||||
@@ -491,7 +492,7 @@ func doOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, op int, args ...int
|
||||
}
|
||||
}
|
||||
|
||||
func doRandomOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, maxKey int) {
|
||||
func doRandomOp(t *testing.T, st types.CacheKVStore, truth corestore.KVStoreWithBatch, maxKey int) {
|
||||
t.Helper()
|
||||
r := randInt(totalOps)
|
||||
switch r {
|
||||
@@ -535,7 +536,7 @@ func assertIterateDomain(t *testing.T, st types.KVStore, expectedN int) {
|
||||
require.NoError(t, itr.Close())
|
||||
}
|
||||
|
||||
func assertIterateDomainCheck(t *testing.T, st types.KVStore, mem dbm.DB, r []keyRange) {
|
||||
func assertIterateDomainCheck(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch, r []keyRange) {
|
||||
t.Helper()
|
||||
// iterate over each and check they match the other
|
||||
itr := st.Iterator(nil, nil)
|
||||
@@ -569,7 +570,7 @@ func assertIterateDomainCheck(t *testing.T, st types.KVStore, mem dbm.DB, r []ke
|
||||
require.NoError(t, itr2.Close())
|
||||
}
|
||||
|
||||
func assertIterateDomainCompare(t *testing.T, st types.KVStore, mem dbm.DB) {
|
||||
func assertIterateDomainCompare(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch) {
|
||||
t.Helper()
|
||||
// iterate over each and check they match the other
|
||||
itr := st.Iterator(nil, nil)
|
||||
@@ -597,7 +598,7 @@ func checkIterators(t *testing.T, itr, itr2 types.Iterator) {
|
||||
|
||||
//--------------------------------------------------------
|
||||
|
||||
func setRange(t *testing.T, st types.KVStore, mem dbm.DB, start, end int) {
|
||||
func setRange(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch, start, end int) {
|
||||
t.Helper()
|
||||
for i := start; i < end; i++ {
|
||||
st.Set(keyFmt(i), valFmt(i))
|
||||
@@ -606,7 +607,7 @@ func setRange(t *testing.T, st types.KVStore, mem dbm.DB, start, end int) {
|
||||
}
|
||||
}
|
||||
|
||||
func deleteRange(t *testing.T, st types.KVStore, mem dbm.DB, start, end int) {
|
||||
func deleteRange(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch, start, end int) {
|
||||
t.Helper()
|
||||
for i := start; i < end; i++ {
|
||||
st.Delete(keyFmt(i))
|
||||
|
||||
@@ -4,8 +4,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/store/cachekv"
|
||||
"cosmossdk.io/store/dbadapter"
|
||||
"cosmossdk.io/store/tracekv"
|
||||
@@ -66,7 +65,7 @@ func NewFromKVStore(
|
||||
// NewStore creates a new Store object from a mapping of store keys to
|
||||
// CacheWrapper objects. Each CacheWrapper store is a branched store.
|
||||
func NewStore(
|
||||
db dbm.DB, stores map[types.StoreKey]types.CacheWrapper, keys map[string]types.StoreKey,
|
||||
db corestore.KVStoreWithBatch, stores map[types.StoreKey]types.CacheWrapper, keys map[string]types.StoreKey,
|
||||
traceWriter io.Writer, traceContext types.TraceContext,
|
||||
) Store {
|
||||
return NewFromKVStore(dbadapter.Store{DB: db}, stores, keys, traceWriter, traceContext)
|
||||
|
||||
@@ -3,16 +3,15 @@ package dbadapter
|
||||
import (
|
||||
"io"
|
||||
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/store/cachekv"
|
||||
"cosmossdk.io/store/tracekv"
|
||||
"cosmossdk.io/store/types"
|
||||
)
|
||||
|
||||
// Store is wrapper type for dbm.Db with implementation of KVStore
|
||||
// Store is wrapper type for corestore.KVStoreWithBatch with implementation of KVStore
|
||||
type Store struct {
|
||||
dbm.DB
|
||||
DB corestore.KVStoreWithBatch
|
||||
}
|
||||
|
||||
// Get wraps the underlying DB's Get method panicking on error.
|
||||
@@ -86,5 +85,5 @@ func (dsa Store) CacheWrapWithTrace(w io.Writer, tc types.TraceContext) types.Ca
|
||||
return cachekv.NewStore(tracekv.NewStore(dsa, w, tc))
|
||||
}
|
||||
|
||||
// dbm.DB implements KVStore so we can CacheKVStore it.
|
||||
// corestore.KVStoreWithBatch implements KVStore so we can CacheKVStore it.
|
||||
var _ types.KVStore = Store{}
|
||||
|
||||
+3
-2
@@ -3,15 +3,16 @@ module cosmossdk.io/store
|
||||
go 1.22.2
|
||||
|
||||
require (
|
||||
cosmossdk.io/core v0.12.1-0.20240813134434-072a29c838a5
|
||||
cosmossdk.io/errors v1.0.1
|
||||
cosmossdk.io/log v1.4.1
|
||||
cosmossdk.io/math v1.3.0
|
||||
github.com/cometbft/cometbft v1.0.0-rc1
|
||||
github.com/cometbft/cometbft/api v1.0.0-rc.1
|
||||
github.com/cosmos/cosmos-db v1.0.2
|
||||
github.com/cosmos/cosmos-db v1.0.3-0.20240829004618-717cba019b33
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5
|
||||
github.com/cosmos/gogoproto v1.7.0
|
||||
github.com/cosmos/iavl v1.2.1-0.20240725141113-7adc688cf179
|
||||
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e
|
||||
github.com/cosmos/ics23/go v0.11.0
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/hashicorp/go-hclog v1.6.3
|
||||
|
||||
+8
-4
@@ -1,3 +1,5 @@
|
||||
cosmossdk.io/core v0.12.1-0.20240813134434-072a29c838a5 h1:aIfrfJUronk2qHPH4N7M5nGzijdSWkRwHHqqPGnQBrk=
|
||||
cosmossdk.io/core v0.12.1-0.20240813134434-072a29c838a5/go.mod h1:B8JQN1vmGCPSVFlmRb/22n1T736P4C2qfEsrSKDX1iM=
|
||||
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
|
||||
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
|
||||
cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
|
||||
@@ -39,14 +41,14 @@ github.com/cometbft/cometbft v1.0.0-rc1/go.mod h1:64cB2wvltmK5plHlJFLYOZYGsaTKNW
|
||||
github.com/cometbft/cometbft/api v1.0.0-rc.1 h1:GtdXwDGlqwHYs16A4egjwylfYOMYyEacLBrs3Zvpt7g=
|
||||
github.com/cometbft/cometbft/api v1.0.0-rc.1/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o=
|
||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs=
|
||||
github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA=
|
||||
github.com/cosmos/cosmos-db v1.0.3-0.20240829004618-717cba019b33 h1:NnqmEOIzUPazzBrhGenzI1AQCBtJ0Hbnb/DDoykpko0=
|
||||
github.com/cosmos/cosmos-db v1.0.3-0.20240829004618-717cba019b33/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
|
||||
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
|
||||
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
|
||||
github.com/cosmos/iavl v1.2.1-0.20240725141113-7adc688cf179 h1:wmwDn7V3RodN9auB3FooSQxs46nHVE3u0mb87TJkZFE=
|
||||
github.com/cosmos/iavl v1.2.1-0.20240725141113-7adc688cf179/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw=
|
||||
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e h1:LEii0v/FxtXa/F7mRn+tijZ0zaXBPn2ZkKwb6Qm4rqE=
|
||||
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e/go.mod h1:3ywr0wDnWeD7MUH6qu50wZ5bxuKH3LBrGG4/lZX8lVY=
|
||||
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
|
||||
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
@@ -234,6 +236,8 @@ github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqri
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
|
||||
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
|
||||
+4
-5
@@ -6,10 +6,10 @@ import (
|
||||
"io"
|
||||
|
||||
cmtprotocrypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
"github.com/cosmos/iavl"
|
||||
ics23 "github.com/cosmos/ics23/go"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
errorsmod "cosmossdk.io/errors"
|
||||
"cosmossdk.io/store/cachekv"
|
||||
"cosmossdk.io/store/internal/kv"
|
||||
@@ -17,7 +17,6 @@ import (
|
||||
pruningtypes "cosmossdk.io/store/pruning/types"
|
||||
"cosmossdk.io/store/tracekv"
|
||||
"cosmossdk.io/store/types"
|
||||
"cosmossdk.io/store/wrapper"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -43,7 +42,7 @@ type Store struct {
|
||||
// LoadStore returns an IAVL Store as a CommitKVStore. Internally, it will load the
|
||||
// store's version (id) from the provided DB. An error is returned if the version
|
||||
// fails to load, or if called with a positive version on an empty tree.
|
||||
func LoadStore(db dbm.DB, logger types.Logger, key types.StoreKey, id types.CommitID, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
|
||||
func LoadStore(db corestore.KVStoreWithBatch, logger types.Logger, key types.StoreKey, id types.CommitID, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
|
||||
return LoadStoreWithInitialVersion(db, logger, key, id, 0, cacheSize, disableFastNode, metrics)
|
||||
}
|
||||
|
||||
@@ -51,8 +50,8 @@ func LoadStore(db dbm.DB, logger types.Logger, key types.StoreKey, id types.Comm
|
||||
// to the one given. Internally, it will load the store's version (id) from the
|
||||
// provided DB. An error is returned if the version fails to load, or if called with a positive
|
||||
// version on an empty tree.
|
||||
func LoadStoreWithInitialVersion(db dbm.DB, logger types.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
|
||||
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, disableFastNode, logger, iavl.InitialVersionOption(initialVersion), iavl.AsyncPruningOption(true))
|
||||
func LoadStoreWithInitialVersion(db corestore.KVStoreWithBatch, logger types.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
|
||||
tree := iavl.NewMutableTree(db, cacheSize, disableFastNode, logger, iavl.InitialVersionOption(initialVersion), iavl.AsyncPruningOption(true))
|
||||
|
||||
isUpgradeable, err := tree.IsUpgradeable()
|
||||
if err != nil {
|
||||
|
||||
+12
-12
@@ -12,12 +12,12 @@ import (
|
||||
"github.com/cosmos/iavl"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/store/cachekv"
|
||||
"cosmossdk.io/store/internal/kv"
|
||||
"cosmossdk.io/store/metrics"
|
||||
"cosmossdk.io/store/types"
|
||||
"cosmossdk.io/store/wrapper"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -36,9 +36,9 @@ func randBytes(numBytes int) []byte {
|
||||
}
|
||||
|
||||
// make a tree with data from above and save it
|
||||
func newAlohaTree(t *testing.T, db dbm.DB) (*iavl.MutableTree, types.CommitID) {
|
||||
func newAlohaTree(t *testing.T, db corestore.KVStoreWithBatch) (*iavl.MutableTree, types.CommitID) {
|
||||
t.Helper()
|
||||
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger())
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
for k, v := range treeData {
|
||||
_, err := tree.Set([]byte(k), []byte(v))
|
||||
@@ -286,7 +286,7 @@ func TestIAVLIterator(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIAVLReverseIterator(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
@@ -320,7 +320,7 @@ func TestIAVLReverseIterator(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIAVLPrefixIterator(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
iavlStore := UnsafeNewStore(tree)
|
||||
@@ -383,7 +383,7 @@ func TestIAVLPrefixIterator(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIAVLReversePrefixIterator(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
iavlStore := UnsafeNewStore(tree)
|
||||
@@ -450,7 +450,7 @@ func nextVersion(iavl *Store) {
|
||||
}
|
||||
|
||||
func TestIAVLNoPrune(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
iavlStore := UnsafeNewStore(tree)
|
||||
@@ -468,7 +468,7 @@ func TestIAVLNoPrune(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIAVLStoreQuery(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
iavlStore := UnsafeNewStore(tree)
|
||||
@@ -580,7 +580,7 @@ func TestIAVLStoreQuery(t *testing.T) {
|
||||
|
||||
func BenchmarkIAVLIteratorNext(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
treeSize := 1000
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
|
||||
@@ -616,7 +616,7 @@ func TestSetInitialVersion(t *testing.T) {
|
||||
{
|
||||
"works with a mutable tree",
|
||||
func(db *dbm.MemDB) *Store {
|
||||
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger())
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
store := UnsafeNewStore(tree)
|
||||
|
||||
return store
|
||||
@@ -625,7 +625,7 @@ func TestSetInitialVersion(t *testing.T) {
|
||||
{
|
||||
"throws error on immutable tree",
|
||||
func(db *dbm.MemDB) *Store {
|
||||
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger())
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
store := UnsafeNewStore(tree)
|
||||
_, version, err := store.tree.SaveVersion()
|
||||
require.NoError(t, err)
|
||||
@@ -673,7 +673,7 @@ func TestChangeSets(t *testing.T) {
|
||||
treeSize := 1000
|
||||
treeVersion := int64(10)
|
||||
targetVersion := int64(6)
|
||||
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger(), iavl.FlushThresholdOption(math.MaxInt))
|
||||
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger(), iavl.FlushThresholdOption(math.MaxInt))
|
||||
|
||||
for j := int64(0); j < treeVersion; j++ {
|
||||
keys := [][]byte{}
|
||||
|
||||
+3
-2
@@ -4,7 +4,8 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cosmos/iavl"
|
||||
idb "github.com/cosmos/iavl/db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -33,7 +34,7 @@ type (
|
||||
GetVersioned(key []byte, version int64) ([]byte, error)
|
||||
GetImmutable(version int64) (*iavl.ImmutableTree, error)
|
||||
SetInitialVersion(version uint64)
|
||||
Iterator(start, end []byte, ascending bool) (idb.Iterator, error)
|
||||
Iterator(start, end []byte, ascending bool) (corestore.Iterator, error)
|
||||
AvailableVersions() []int
|
||||
LoadVersionForOverwriting(targetVersion int64) error
|
||||
TraverseStateChanges(startVersion, endVersion int64, fn func(version int64, changeSet *iavl.ChangeSet) error) error
|
||||
|
||||
@@ -8,12 +8,11 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/store/wrapper"
|
||||
)
|
||||
|
||||
func TestImmutableTreePanics(t *testing.T) {
|
||||
t.Parallel()
|
||||
immTree := iavl.NewImmutableTree(wrapper.NewDBWrapper(dbm.NewMemDB()), 100, false, log.NewNopLogger())
|
||||
immTree := iavl.NewImmutableTree(dbm.NewMemDB(), 100, false, log.NewNopLogger())
|
||||
it := &immutableTree{immTree}
|
||||
require.Panics(t, func() {
|
||||
_, err := it.Set([]byte{}, []byte{})
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"cosmossdk.io/store/gaskv"
|
||||
"cosmossdk.io/store/iavl"
|
||||
"cosmossdk.io/store/types"
|
||||
"cosmossdk.io/store/wrapper"
|
||||
)
|
||||
|
||||
// copied from iavl/store_test.go
|
||||
@@ -91,7 +90,7 @@ func testPrefixStore(t *testing.T, baseStore types.KVStore, prefix []byte) {
|
||||
}
|
||||
|
||||
func TestIAVLStorePrefix(t *testing.T) {
|
||||
db := wrapper.NewDBWrapper(dbm.NewMemDB())
|
||||
db := dbm.NewMemDB()
|
||||
tree := tiavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
|
||||
iavlStore := iavl.UnsafeNewStore(tree)
|
||||
|
||||
|
||||
@@ -6,8 +6,7 @@ import (
|
||||
"sort"
|
||||
"sync"
|
||||
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/store/pruning/types"
|
||||
storetypes "cosmossdk.io/store/types"
|
||||
)
|
||||
@@ -16,7 +15,7 @@ import (
|
||||
// determining when to prune old heights of the store
|
||||
// based on the strategy described by the pruning options.
|
||||
type Manager struct {
|
||||
db dbm.DB
|
||||
db corestore.KVStoreWithBatch
|
||||
logger storetypes.Logger
|
||||
opts types.PruningOptions
|
||||
snapshotInterval uint64
|
||||
@@ -46,7 +45,7 @@ var pruneSnapshotHeightsKey = []byte("s/prunesnapshotheights")
|
||||
// The returned manager uses a pruning strategy of "nothing" which
|
||||
// keeps all heights. Users of the Manager may change the strategy
|
||||
// by calling SetOptions.
|
||||
func NewManager(db dbm.DB, logger storetypes.Logger) *Manager {
|
||||
func NewManager(db corestore.KVStoreWithBatch, logger storetypes.Logger) *Manager {
|
||||
return &Manager{
|
||||
db: db,
|
||||
logger: logger,
|
||||
@@ -89,7 +88,7 @@ func (m *Manager) HandleSnapshotHeight(height int64) {
|
||||
m.pruneSnapshotHeights = m.pruneSnapshotHeights[k-1:]
|
||||
|
||||
// flush the updates to disk so that they are not lost if crash happens.
|
||||
if err := m.db.SetSync(pruneSnapshotHeightsKey, int64SliceToBytes(m.pruneSnapshotHeights)); err != nil {
|
||||
if err := m.db.Set(pruneSnapshotHeightsKey, int64SliceToBytes(m.pruneSnapshotHeights)); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
@@ -137,7 +136,7 @@ func (m *Manager) GetPruningHeight(height int64) int64 {
|
||||
}
|
||||
|
||||
// LoadSnapshotHeights loads the snapshot heights from the database as a crash recovery.
|
||||
func (m *Manager) LoadSnapshotHeights(db dbm.DB) error {
|
||||
func (m *Manager) LoadSnapshotHeights(db corestore.KVStoreWithBatch) error {
|
||||
if m.opts.GetPruningStrategy() == types.PruningNothing {
|
||||
return nil
|
||||
}
|
||||
@@ -156,7 +155,7 @@ func (m *Manager) LoadSnapshotHeights(db dbm.DB) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func loadPruningSnapshotHeights(db dbm.DB) ([]int64, error) {
|
||||
func loadPruningSnapshotHeights(db corestore.KVStoreWithBatch) ([]int64, error) {
|
||||
bz, err := db.Get(pruneSnapshotHeightsKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get post-snapshot pruned heights: %w", err)
|
||||
|
||||
@@ -202,7 +202,7 @@ func TestHandleSnapshotHeight_DbErr_Panic(t *testing.T) {
|
||||
// Setup
|
||||
dbMock := mock.NewMockDB(ctrl)
|
||||
|
||||
dbMock.EXPECT().SetSync(gomock.Any(), gomock.Any()).Return(errors.New(dbErr)).Times(1)
|
||||
dbMock.EXPECT().Set(gomock.Any(), gomock.Any()).Return(errors.New(dbErr)).Times(1)
|
||||
|
||||
manager := pruning.NewManager(dbMock, log.NewNopLogger())
|
||||
manager.SetOptions(types.NewPruningOptions(types.PruningEverything))
|
||||
|
||||
@@ -17,7 +17,7 @@ var (
|
||||
// commitDBStoreWrapper should only be used for simulation/debugging,
|
||||
// as it doesn't compute any commit hash, and it cannot load older state.
|
||||
|
||||
// Wrapper type for dbm.Db with implementation of KVStore
|
||||
// Wrapper type for corestore.KVStoreWithBatch with implementation of KVStore
|
||||
type commitDBStoreAdapter struct {
|
||||
dbadapter.Store
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/store/iavl"
|
||||
"cosmossdk.io/store/metrics"
|
||||
@@ -23,7 +24,7 @@ import (
|
||||
"cosmossdk.io/store/types"
|
||||
)
|
||||
|
||||
func newMultiStoreWithGeneratedData(db dbm.DB, stores uint8, storeKeys uint64) *rootmulti.Store {
|
||||
func newMultiStoreWithGeneratedData(db corestore.KVStoreWithBatch, stores uint8, storeKeys uint64) *rootmulti.Store {
|
||||
multiStore := rootmulti.NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
|
||||
r := rand.New(rand.NewSource(49872768940)) // Fixed seed for deterministic tests
|
||||
|
||||
@@ -61,7 +62,7 @@ func newMultiStoreWithGeneratedData(db dbm.DB, stores uint8, storeKeys uint64) *
|
||||
return multiStore
|
||||
}
|
||||
|
||||
func newMultiStoreWithMixedMounts(db dbm.DB) *rootmulti.Store {
|
||||
func newMultiStoreWithMixedMounts(db corestore.KVStoreWithBatch) *rootmulti.Store {
|
||||
store := rootmulti.NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
|
||||
store.MountStoreWithDB(types.NewKVStoreKey("iavl1"), types.StoreTypeIAVL, nil)
|
||||
store.MountStoreWithDB(types.NewKVStoreKey("iavl2"), types.StoreTypeIAVL, nil)
|
||||
@@ -73,7 +74,7 @@ func newMultiStoreWithMixedMounts(db dbm.DB) *rootmulti.Store {
|
||||
return store
|
||||
}
|
||||
|
||||
func newMultiStoreWithMixedMountsAndBasicData(db dbm.DB) *rootmulti.Store {
|
||||
func newMultiStoreWithMixedMountsAndBasicData(db corestore.KVStoreWithBatch) *rootmulti.Store {
|
||||
store := newMultiStoreWithMixedMounts(db)
|
||||
store1 := store.GetStoreByName("iavl1").(types.CommitKVStore)
|
||||
store2 := store.GetStoreByName("iavl2").(types.CommitKVStore)
|
||||
|
||||
+11
-10
@@ -16,6 +16,7 @@ import (
|
||||
gogotypes "github.com/cosmos/gogoproto/types"
|
||||
iavltree "github.com/cosmos/iavl"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
errorsmod "cosmossdk.io/errors"
|
||||
"cosmossdk.io/store/cachemulti"
|
||||
"cosmossdk.io/store/dbadapter"
|
||||
@@ -55,7 +56,7 @@ func keysFromStoreKeyMap[V any](m map[types.StoreKey]V) []types.StoreKey {
|
||||
// cacheMultiStore which is used for branching other MultiStores. It implements
|
||||
// the CommitMultiStore interface.
|
||||
type Store struct {
|
||||
db dbm.DB
|
||||
db corestore.KVStoreWithBatch
|
||||
logger iavltree.Logger
|
||||
lastCommitInfo *types.CommitInfo
|
||||
pruningManager *pruning.Manager
|
||||
@@ -84,7 +85,7 @@ var (
|
||||
// store will be created with a PruneNothing pruning strategy by default. After
|
||||
// a store is created, KVStores must be mounted and finally LoadLatestVersion or
|
||||
// LoadVersion must be called.
|
||||
func NewStore(db dbm.DB, logger iavltree.Logger, metricGatherer metrics.StoreMetrics) *Store {
|
||||
func NewStore(db corestore.KVStoreWithBatch, logger iavltree.Logger, metricGatherer metrics.StoreMetrics) *Store {
|
||||
return &Store{
|
||||
db: db,
|
||||
logger: logger,
|
||||
@@ -137,7 +138,7 @@ func (rs *Store) GetStoreType() types.StoreType {
|
||||
}
|
||||
|
||||
// MountStoreWithDB implements CommitMultiStore.
|
||||
func (rs *Store) MountStoreWithDB(key types.StoreKey, typ types.StoreType, db dbm.DB) {
|
||||
func (rs *Store) MountStoreWithDB(key types.StoreKey, typ types.StoreType, db corestore.KVStoreWithBatch) {
|
||||
if key == nil {
|
||||
panic("MountIAVLStore() key cannot be nil")
|
||||
}
|
||||
@@ -1013,13 +1014,13 @@ loop:
|
||||
}
|
||||
|
||||
func (rs *Store) loadCommitStoreFromParams(key types.StoreKey, id types.CommitID, params storeParams) (types.CommitKVStore, error) {
|
||||
var db dbm.DB
|
||||
var db corestore.KVStoreWithBatch
|
||||
|
||||
if params.db != nil {
|
||||
db = dbm.NewPrefixDB(params.db, []byte("s/_/"))
|
||||
db = dbm.NewPrefixDB(params.db.(dbm.DB), []byte("s/_/"))
|
||||
} else {
|
||||
prefix := "s/k:" + params.key.Name() + "/"
|
||||
db = dbm.NewPrefixDB(rs.db, []byte(prefix))
|
||||
db = dbm.NewPrefixDB(rs.db.(dbm.DB), []byte(prefix))
|
||||
}
|
||||
|
||||
switch params.typ {
|
||||
@@ -1141,7 +1142,7 @@ func (rs *Store) GetCommitInfo(ver int64) (*types.CommitInfo, error) {
|
||||
return cInfo, nil
|
||||
}
|
||||
|
||||
func (rs *Store) flushMetadata(db dbm.DB, version int64, cInfo *types.CommitInfo) {
|
||||
func (rs *Store) flushMetadata(db corestore.KVStoreWithBatch, version int64, cInfo *types.CommitInfo) {
|
||||
rs.logger.Debug("flushing metadata", "height", version)
|
||||
batch := db.NewBatch()
|
||||
defer func() {
|
||||
@@ -1164,12 +1165,12 @@ func (rs *Store) flushMetadata(db dbm.DB, version int64, cInfo *types.CommitInfo
|
||||
|
||||
type storeParams struct {
|
||||
key types.StoreKey
|
||||
db dbm.DB
|
||||
db corestore.KVStoreWithBatch
|
||||
typ types.StoreType
|
||||
initialVersion uint64
|
||||
}
|
||||
|
||||
func newStoreParams(key types.StoreKey, db dbm.DB, typ types.StoreType, initialVersion uint64) storeParams {
|
||||
func newStoreParams(key types.StoreKey, db corestore.KVStoreWithBatch, typ types.StoreType, initialVersion uint64) storeParams {
|
||||
return storeParams{
|
||||
key: key,
|
||||
db: db,
|
||||
@@ -1178,7 +1179,7 @@ func newStoreParams(key types.StoreKey, db dbm.DB, typ types.StoreType, initialV
|
||||
}
|
||||
}
|
||||
|
||||
func GetLatestVersion(db dbm.DB) int64 {
|
||||
func GetLatestVersion(db corestore.KVStoreWithBatch) int64 {
|
||||
bz, err := db.Get([]byte(latestVersionKey))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/errors"
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/store/cachemulti"
|
||||
@@ -27,7 +28,7 @@ func TestStoreType(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetCommitKVStore(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningDefault))
|
||||
err := ms.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -60,7 +61,7 @@ func TestStoreMount(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCacheMultiStore(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
|
||||
cacheMulti := ms.CacheMultiStore()
|
||||
@@ -68,7 +69,7 @@ func TestCacheMultiStore(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCacheMultiStoreWithVersion(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
err := ms.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -121,7 +122,7 @@ func TestCacheMultiStoreWithVersion(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestHashStableWithEmptyCommit(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
err := ms.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -151,7 +152,7 @@ func TestHashStableWithEmptyCommit(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMultistoreCommitLoad(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
store := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
err := store.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -204,7 +205,7 @@ func TestMultistoreCommitLoad(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMultistoreLoadWithUpgrade(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
store := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
err := store.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -668,7 +669,7 @@ func TestPausePruningOnCommit(t *testing.T) {
|
||||
// TestUnevenStoresHeightCheck tests if loading root store correctly errors when
|
||||
// there's any module store with the wrong height
|
||||
func TestUnevenStoresHeightCheck(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
store := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
err := store.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -788,7 +789,7 @@ func TestTraceConcurrency(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCommitOrdered(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
multi := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
err := multi.LoadLatestVersion()
|
||||
require.Nil(t, err)
|
||||
@@ -832,7 +833,7 @@ var (
|
||||
testStoreKey3 = types.NewKVStoreKey("store3")
|
||||
)
|
||||
|
||||
func newMultiStoreWithMounts(db dbm.DB, pruningOpts pruningtypes.PruningOptions) *Store {
|
||||
func newMultiStoreWithMounts(db corestore.KVStoreWithBatch, pruningOpts pruningtypes.PruningOptions) *Store {
|
||||
store := NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
|
||||
store.SetPruning(pruningOpts)
|
||||
|
||||
@@ -843,7 +844,7 @@ func newMultiStoreWithMounts(db dbm.DB, pruningOpts pruningtypes.PruningOptions)
|
||||
return store
|
||||
}
|
||||
|
||||
func newMultiStoreWithModifiedMounts(db dbm.DB, pruningOpts pruningtypes.PruningOptions) (*Store, *types.StoreUpgrades) {
|
||||
func newMultiStoreWithModifiedMounts(db corestore.KVStoreWithBatch, pruningOpts pruningtypes.PruningOptions) (*Store, *types.StoreUpgrades) {
|
||||
store := NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
|
||||
store.SetPruning(pruningOpts)
|
||||
|
||||
@@ -929,7 +930,7 @@ func (tl *MockListener) OnWrite(storeKey types.StoreKey, key, value []byte, dele
|
||||
}
|
||||
|
||||
func TestStateListeners(t *testing.T) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
|
||||
require.Empty(t, ms.listeners)
|
||||
|
||||
@@ -969,7 +970,7 @@ func (stub *commitKVStoreStub) Commit() types.CommitID {
|
||||
}
|
||||
|
||||
func prepareStoreMap() (map[types.StoreKey]types.CommitKVStore, error) {
|
||||
var db dbm.DB = dbm.NewMemDB()
|
||||
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
|
||||
store := NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
|
||||
store.MountStoreWithDB(types.NewKVStoreKey("iavl1"), types.StoreTypeIAVL, nil)
|
||||
store.MountStoreWithDB(types.NewKVStoreKey("iavl2"), types.StoreTypeIAVL, nil)
|
||||
|
||||
+2
-3
@@ -1,15 +1,14 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/store/cache"
|
||||
"cosmossdk.io/store/metrics"
|
||||
"cosmossdk.io/store/rootmulti"
|
||||
"cosmossdk.io/store/types"
|
||||
)
|
||||
|
||||
func NewCommitMultiStore(db dbm.DB, logger types.Logger, metricGatherer metrics.StoreMetrics) types.CommitMultiStore {
|
||||
func NewCommitMultiStore(db corestore.KVStoreWithBatch, logger types.Logger, metricGatherer metrics.StoreMetrics) types.CommitMultiStore {
|
||||
return rootmulti.NewStore(db, logger, metricGatherer)
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"io"
|
||||
|
||||
crypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/store/metrics"
|
||||
pruningtypes "cosmossdk.io/store/pruning/types"
|
||||
snapshottypes "cosmossdk.io/store/snapshots/types"
|
||||
@@ -178,7 +178,7 @@ type CommitMultiStore interface {
|
||||
|
||||
// MountStoreWithDB mount a store of type using the given db.
|
||||
// If db == nil, the new store will use the CommitMultiStore db.
|
||||
MountStoreWithDB(key StoreKey, typ StoreType, db dbm.DB)
|
||||
MountStoreWithDB(key StoreKey, typ StoreType, db corestore.KVStoreWithBatch)
|
||||
|
||||
// GetCommitStore panics on a nil key.
|
||||
GetCommitStore(key StoreKey) CommitStore
|
||||
@@ -276,7 +276,7 @@ type KVStore interface {
|
||||
}
|
||||
|
||||
// Iterator is an alias db's Iterator for convenience.
|
||||
type Iterator = dbm.Iterator
|
||||
type Iterator = corestore.Iterator
|
||||
|
||||
// CacheKVStore branches a KVStore and provides read cache functionality.
|
||||
// After calling .Write() on the CacheKVStore, all previously created
|
||||
|
||||
@@ -10,7 +10,6 @@ import (
|
||||
corestore "cosmossdk.io/core/store"
|
||||
"cosmossdk.io/store/v2"
|
||||
"cosmossdk.io/store/v2/commitment"
|
||||
dbm "cosmossdk.io/store/v2/db"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -25,7 +24,7 @@ type IavlTree struct {
|
||||
|
||||
// NewIavlTree creates a new IavlTree instance.
|
||||
func NewIavlTree(db corestore.KVStoreWithBatch, logger log.Logger, cfg *Config) *IavlTree {
|
||||
tree := iavl.NewMutableTree(dbm.NewWrapper(db), cfg.CacheSize, cfg.SkipFastStorageUpgrade, logger, iavl.AsyncPruningOption(true))
|
||||
tree := iavl.NewMutableTree(db, cfg.CacheSize, cfg.SkipFastStorageUpgrade, logger, iavl.AsyncPruningOption(true))
|
||||
return &IavlTree{
|
||||
tree: tree,
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
idb "github.com/cosmos/iavl/db"
|
||||
|
||||
corestore "cosmossdk.io/core/store"
|
||||
)
|
||||
|
||||
// Wrapper wraps a `corestore.KVStoreWithBatch` to implement iavl.DB which is used by iavl.Tree.
|
||||
type Wrapper struct {
|
||||
corestore.KVStoreWithBatch
|
||||
}
|
||||
|
||||
var _ idb.DB = (*Wrapper)(nil)
|
||||
|
||||
// NewWrapper returns a new Wrapper.
|
||||
func NewWrapper(db corestore.KVStoreWithBatch) *Wrapper {
|
||||
return &Wrapper{KVStoreWithBatch: db}
|
||||
}
|
||||
|
||||
// Iterator implements iavl.DB.
|
||||
func (db *Wrapper) Iterator(start, end []byte) (idb.Iterator, error) {
|
||||
return db.KVStoreWithBatch.Iterator(start, end)
|
||||
}
|
||||
|
||||
// ReverseIterator implements iavl.DB.
|
||||
func (db *Wrapper) ReverseIterator(start, end []byte) (idb.Iterator, error) {
|
||||
return db.KVStoreWithBatch.ReverseIterator(start, end)
|
||||
}
|
||||
|
||||
// NewBatch implements iavl.DB.
|
||||
func (db *Wrapper) NewBatch() idb.Batch {
|
||||
return db.KVStoreWithBatch.NewBatch()
|
||||
}
|
||||
|
||||
// NewBatchWithSize implements iavl.DB.
|
||||
func (db *Wrapper) NewBatchWithSize(size int) idb.Batch {
|
||||
return db.KVStoreWithBatch.NewBatchWithSize(size)
|
||||
}
|
||||
+2
-3
@@ -10,7 +10,7 @@ require (
|
||||
github.com/cockroachdb/pebble v1.1.0
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5
|
||||
github.com/cosmos/gogoproto v1.7.0
|
||||
github.com/cosmos/iavl v1.2.1-0.20240731145221-594b181f427e
|
||||
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e
|
||||
github.com/cosmos/ics23/go v0.11.0
|
||||
github.com/google/btree v1.1.2
|
||||
github.com/hashicorp/go-metrics v0.5.3
|
||||
@@ -31,7 +31,6 @@ require (
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
|
||||
github.com/cockroachdb/redact v1.1.5 // indirect
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
|
||||
github.com/cosmos/cosmos-db v1.0.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/emicklei/dot v1.6.2 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
@@ -58,7 +57,7 @@ require (
|
||||
github.com/rs/zerolog v1.33.0 // indirect
|
||||
github.com/tidwall/btree v1.7.0 // indirect
|
||||
golang.org/x/crypto v0.26.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
|
||||
golang.org/x/sys v0.24.0 // indirect
|
||||
golang.org/x/text v0.17.0 // indirect
|
||||
google.golang.org/protobuf v1.34.2 // indirect
|
||||
|
||||
+4
-8
@@ -34,14 +34,12 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
|
||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0E=
|
||||
github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
|
||||
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
|
||||
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
|
||||
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
|
||||
github.com/cosmos/iavl v1.2.1-0.20240731145221-594b181f427e h1:5bxw1E0peLMrr8ZO9mYT0d9sxy0WgR1ZEWb92yjKnnk=
|
||||
github.com/cosmos/iavl v1.2.1-0.20240731145221-594b181f427e/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw=
|
||||
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e h1:LEii0v/FxtXa/F7mRn+tijZ0zaXBPn2ZkKwb6Qm4rqE=
|
||||
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e/go.mod h1:3ywr0wDnWeD7MUH6qu50wZ5bxuKH3LBrGG4/lZX8lVY=
|
||||
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
|
||||
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
@@ -72,8 +70,6 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
|
||||
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
@@ -228,8 +224,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
|
||||
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
|
||||
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
|
||||
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package wrapper
|
||||
|
||||
import (
|
||||
dbm "github.com/cosmos/cosmos-db"
|
||||
idb "github.com/cosmos/iavl/db"
|
||||
)
|
||||
|
||||
var _ idb.DB = &DBWrapper{}
|
||||
|
||||
// DBWrapper is a simple wrapper of dbm.DB that implements the iavl.DB interface.
|
||||
type DBWrapper struct {
|
||||
dbm.DB
|
||||
}
|
||||
|
||||
// NewDBWrapper creates a new DBWrapper instance.
|
||||
func NewDBWrapper(db dbm.DB) *DBWrapper {
|
||||
return &DBWrapper{db}
|
||||
}
|
||||
|
||||
func (dbw *DBWrapper) NewBatch() idb.Batch {
|
||||
return dbw.DB.NewBatch()
|
||||
}
|
||||
|
||||
func (dbw *DBWrapper) NewBatchWithSize(size int) idb.Batch {
|
||||
return dbw.DB.NewBatchWithSize(size)
|
||||
}
|
||||
|
||||
func (dbw *DBWrapper) Iterator(start, end []byte) (idb.Iterator, error) {
|
||||
return dbw.DB.Iterator(start, end)
|
||||
}
|
||||
|
||||
func (dbw *DBWrapper) ReverseIterator(start, end []byte) (idb.Iterator, error) {
|
||||
return dbw.DB.ReverseIterator(start, end)
|
||||
}
|
||||
Reference in New Issue
Block a user