Skip to content

Commit

Permalink
Problem: prune cmd should disable async pruning
Browse files Browse the repository at this point in the history
  • Loading branch information
yihuang committed Nov 29, 2024
1 parent 3300cc8 commit fd22237
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 11 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ Ref: https://keepachangelog.com/en/1.0.0/

* (sims) [21906](https://github.com/cosmos/cosmos-sdk/pull/21906) Skip sims test when running dry on validators
* (cli) [#21919](https://github.com/cosmos/cosmos-sdk/pull/21919) Query address-by-acc-num by account_id instead of id.
* (cli) [#22656](https://github.com/cosmos/cosmos-sdk/pull/22656) Prune cmd should disable async pruning.

## [v0.50.10](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.10) - 2024-09-20

Expand Down
5 changes: 5 additions & 0 deletions baseapp/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ func SetIAVLDisableFastNode(disable bool) func(*BaseApp) {
return func(bapp *BaseApp) { bapp.cms.SetIAVLDisableFastNode(disable) }
}

// SetIAVLSyncPruning set sync/async pruning in the IAVL store.
func SetIAVLSyncPruning(syncPruning bool) func(*BaseApp) {
return func(bapp *BaseApp) { bapp.cms.SetIAVLSyncPruning(syncPruning) }
}

// SetInterBlockCache provides a BaseApp option function that sets the
// inter-block cache.
func SetInterBlockCache(cache storetypes.MultiStorePersistentCache) func(*BaseApp) {
Expand Down
3 changes: 3 additions & 0 deletions client/pruning/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ Supported app-db-backend types include 'goleveldb', 'rocksdb', 'pebbledb'.`,
return err
}

// must disable async pruning
vp.Set(server.FlagIAVLSyncPruning, true)

// use the first argument if present to set the pruning method
if len(args) > 0 {
vp.Set(server.FlagPruning, args[0])
Expand Down
1 change: 1 addition & 0 deletions server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ const (
FlagMinRetainBlocks = "min-retain-blocks"
FlagIAVLCacheSize = "iavl-cache-size"
FlagDisableIAVLFastNode = "iavl-disable-fastnode"
FlagIAVLSyncPruning = "iavl-sync-pruning"
FlagShutdownGrace = "shutdown-grace"

// state sync-related flags
Expand Down
1 change: 1 addition & 0 deletions server/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,7 @@ func DefaultBaseappOptions(appOpts types.AppOptions) []func(*baseapp.BaseApp) {
baseapp.SetSnapshot(snapshotStore, snapshotOptions),
baseapp.SetIAVLCacheSize(cast.ToInt(appOpts.Get(FlagIAVLCacheSize))),
baseapp.SetIAVLDisableFastNode(cast.ToBool(appOpts.Get(FlagDisableIAVLFastNode))),
baseapp.SetIAVLSyncPruning(cast.ToBool(appOpts.Get(FlagIAVLSyncPruning))),
defaultMempool,
baseapp.SetChainID(chainID),
baseapp.SetQueryGasLimit(cast.ToUint64(appOpts.Get(FlagQueryGasLimit))),
Expand Down
12 changes: 10 additions & 2 deletions store/iavl/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"cosmossdk.io/store/metrics"
pruningtypes "cosmossdk.io/store/pruning/types"
"cosmossdk.io/store/types"
"cosmossdk.io/store/wrapper"
)

const (
Expand Down Expand Up @@ -50,7 +49,16 @@ func LoadStore(db dbm.DB, logger log.Logger, key types.StoreKey, id types.Commit
// 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 log.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))
return LoadStoreWithOpts(db, logger, key, id, initialVersion, cacheSize, disableFastNode, metrics, iavl.AsyncPruningOption(true))
}

func LoadStoreWithOpts(db dbm.DB, logger log.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics, opts ...iavl.Option) (types.CommitKVStore, error) {
// store/v1 and app/v1 flows never require an initial version of 0
if initialVersion == 0 {
initialVersion = 1
}
opts = append(opts, iavl.InitialVersionOption(initialVersion))
tree := iavl.NewMutableTree(db, cacheSize, disableFastNode, logger, opts...)

Check failure on line 61 in store/iavl/store.go

View workflow job for this annotation

GitHub Actions / dependency-review

cannot use db (variable of type "github.com/cosmos/cosmos-db".DB) as "github.com/cosmos/iavl/db".DB value in argument to iavl.NewMutableTree: "github.com/cosmos/cosmos-db".DB does not implement "github.com/cosmos/iavl/db".DB (wrong type for method Iterator)

Check failure on line 61 in store/iavl/store.go

View workflow job for this annotation

GitHub Actions / tests (00)

cannot use db (variable of type "github.com/cosmos/cosmos-db".DB) as "github.com/cosmos/iavl/db".DB value in argument to iavl.NewMutableTree: "github.com/cosmos/cosmos-db".DB does not implement "github.com/cosmos/iavl/db".DB (wrong type for method Iterator)

Check failure on line 61 in store/iavl/store.go

View workflow job for this annotation

GitHub Actions / tests (01)

cannot use db (variable of type "github.com/cosmos/cosmos-db".DB) as "github.com/cosmos/iavl/db".DB value in argument to iavl.NewMutableTree: "github.com/cosmos/cosmos-db".DB does not implement "github.com/cosmos/iavl/db".DB (wrong type for method Iterator)

Check failure on line 61 in store/iavl/store.go

View workflow job for this annotation

GitHub Actions / tests (02)

cannot use db (variable of type "github.com/cosmos/cosmos-db".DB) as "github.com/cosmos/iavl/db".DB value in argument to iavl.NewMutableTree: "github.com/cosmos/cosmos-db".DB does not implement "github.com/cosmos/iavl/db".DB (wrong type for method Iterator)

Check failure on line 61 in store/iavl/store.go

View workflow job for this annotation

GitHub Actions / tests (03)

cannot use db (variable of type "github.com/cosmos/cosmos-db".DB) as "github.com/cosmos/iavl/db".DB value in argument to iavl.NewMutableTree: "github.com/cosmos/cosmos-db".DB does not implement "github.com/cosmos/iavl/db".DB (wrong type for method Iterator)

isUpgradeable, err := tree.IsUpgradeable()
if err != nil {
Expand Down
15 changes: 6 additions & 9 deletions store/rootmulti/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ type Store struct {
pruningManager *pruning.Manager
iavlCacheSize int
iavlDisableFastNode bool
iavlSyncPruning bool
storesParams map[types.StoreKey]storeParams
// CommitStore is a common interface to unify generic CommitKVStore of different value types
stores map[types.StoreKey]types.CommitStore
Expand Down Expand Up @@ -133,6 +134,10 @@ func (rs *Store) SetIAVLDisableFastNode(disableFastNode bool) {
rs.iavlDisableFastNode = disableFastNode
}

func (rs *Store) SetIAVLSyncPruning(syncPruning bool) {
rs.iavlSyncPruning = syncPruning
}

// GetStoreType implements Store.
func (rs *Store) GetStoreType() types.StoreType {
return types.StoreTypeMulti
Expand Down Expand Up @@ -1047,15 +1052,7 @@ func (rs *Store) loadCommitStoreFromParams(key types.StoreKey, id types.CommitID
panic("recursive MultiStores not yet supported")

case types.StoreTypeIAVL:
var store types.CommitKVStore
var err error

if params.initialVersion == 0 {
store, err = iavl.LoadStore(db, rs.logger, key, id, rs.iavlCacheSize, rs.iavlDisableFastNode, rs.metrics)
} else {
store, err = iavl.LoadStoreWithInitialVersion(db, rs.logger, key, id, params.initialVersion, rs.iavlCacheSize, rs.iavlDisableFastNode, rs.metrics)
}

store, err := iavl.LoadStoreWithOpts(db, rs.logger, key, id, params.initialVersion, rs.iavlCacheSize, rs.iavlDisableFastNode, rs.metrics, iavltree.AsyncPruningOption(!rs.iavlSyncPruning))
if err != nil {
return nil, err
}
Expand Down
3 changes: 3 additions & 0 deletions store/types/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,9 @@ type CommitMultiStore interface {
// SetIAVLDisableFastNode enables/disables fastnode feature on iavl.
SetIAVLDisableFastNode(disable bool)

// SetIAVLSyncPruning set sync/async pruning on iavl.
SetIAVLSyncPruning(sync bool)

// RollbackToVersion rollback the db to specific version(height).
RollbackToVersion(version int64) error

Expand Down

0 comments on commit fd22237

Please sign in to comment.