feat: configurable fastnode (#13321)
This commit is contained in:
@@ -15,7 +15,7 @@ import (
|
||||
func TestVerifyIAVLStoreQueryProof(t *testing.T) {
|
||||
// Create main tree for testing.
|
||||
db := dbm.NewMemDB()
|
||||
iStore, err := iavl.LoadStore(db, log.NewNopLogger(), types.NewKVStoreKey("test"), types.CommitID{}, false, iavl.DefaultIAVLCacheSize)
|
||||
iStore, err := iavl.LoadStore(db, log.NewNopLogger(), types.NewKVStoreKey("test"), types.CommitID{}, false, iavl.DefaultIAVLCacheSize, false)
|
||||
store := iStore.(*iavl.Store)
|
||||
require.Nil(t, err)
|
||||
store.Set([]byte("MYKEY"), []byte("MYVALUE"))
|
||||
|
||||
+30
-22
@@ -35,21 +35,24 @@ const (
|
||||
commitInfoKeyFmt = "s/%d" // s/<version>
|
||||
)
|
||||
|
||||
const iavlDisablefastNodeDefault = false
|
||||
|
||||
// Store is composed of many CommitStores. Name contrasts with
|
||||
// cacheMultiStore which is used for branching other MultiStores. It implements
|
||||
// the CommitMultiStore interface.
|
||||
type Store struct {
|
||||
db dbm.DB
|
||||
logger log.Logger
|
||||
lastCommitInfo *types.CommitInfo
|
||||
pruningManager *pruning.Manager
|
||||
iavlCacheSize int
|
||||
storesParams map[types.StoreKey]storeParams
|
||||
stores map[types.StoreKey]types.CommitKVStore
|
||||
keysByName map[string]types.StoreKey
|
||||
lazyLoading bool
|
||||
initialVersion int64
|
||||
removalMap map[types.StoreKey]bool
|
||||
db dbm.DB
|
||||
logger log.Logger
|
||||
lastCommitInfo *types.CommitInfo
|
||||
pruningManager *pruning.Manager
|
||||
iavlCacheSize int
|
||||
iavlDisableFastNode bool
|
||||
storesParams map[types.StoreKey]storeParams
|
||||
stores map[types.StoreKey]types.CommitKVStore
|
||||
keysByName map[string]types.StoreKey
|
||||
lazyLoading bool
|
||||
initialVersion int64
|
||||
removalMap map[types.StoreKey]bool
|
||||
|
||||
traceWriter io.Writer
|
||||
traceContext types.TraceContext
|
||||
@@ -71,15 +74,16 @@ var (
|
||||
// LoadVersion must be called.
|
||||
func NewStore(db dbm.DB, logger log.Logger) *Store {
|
||||
return &Store{
|
||||
db: db,
|
||||
logger: logger,
|
||||
iavlCacheSize: iavl.DefaultIAVLCacheSize,
|
||||
storesParams: make(map[types.StoreKey]storeParams),
|
||||
stores: make(map[types.StoreKey]types.CommitKVStore),
|
||||
keysByName: make(map[string]types.StoreKey),
|
||||
listeners: make(map[types.StoreKey][]types.WriteListener),
|
||||
removalMap: make(map[types.StoreKey]bool),
|
||||
pruningManager: pruning.NewManager(db, logger),
|
||||
db: db,
|
||||
logger: logger,
|
||||
iavlCacheSize: iavl.DefaultIAVLCacheSize,
|
||||
iavlDisableFastNode: iavlDisablefastNodeDefault,
|
||||
storesParams: make(map[types.StoreKey]storeParams),
|
||||
stores: make(map[types.StoreKey]types.CommitKVStore),
|
||||
keysByName: make(map[string]types.StoreKey),
|
||||
listeners: make(map[types.StoreKey][]types.WriteListener),
|
||||
removalMap: make(map[types.StoreKey]bool),
|
||||
pruningManager: pruning.NewManager(db, logger),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +109,10 @@ func (rs *Store) SetIAVLCacheSize(cacheSize int) {
|
||||
rs.iavlCacheSize = cacheSize
|
||||
}
|
||||
|
||||
func (rs *Store) SetIAVLDisableFastNode(disableFastNode bool) {
|
||||
rs.iavlDisableFastNode = disableFastNode
|
||||
}
|
||||
|
||||
// SetLazyLoading sets if the iavl store should be loaded lazily or not
|
||||
func (rs *Store) SetLazyLoading(lazyLoading bool) {
|
||||
rs.lazyLoading = lazyLoading
|
||||
@@ -876,9 +884,9 @@ func (rs *Store) loadCommitStoreFromParams(key types.StoreKey, id types.CommitID
|
||||
var err error
|
||||
|
||||
if params.initialVersion == 0 {
|
||||
store, err = iavl.LoadStore(db, rs.logger, key, id, rs.lazyLoading, rs.iavlCacheSize)
|
||||
store, err = iavl.LoadStore(db, rs.logger, key, id, rs.lazyLoading, rs.iavlCacheSize, rs.iavlDisableFastNode)
|
||||
} else {
|
||||
store, err = iavl.LoadStoreWithInitialVersion(db, rs.logger, key, id, rs.lazyLoading, params.initialVersion, rs.iavlCacheSize)
|
||||
store, err = iavl.LoadStoreWithInitialVersion(db, rs.logger, key, id, rs.lazyLoading, params.initialVersion, rs.iavlCacheSize, rs.iavlDisableFastNode)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user