Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into enforce_chain_id
Browse files Browse the repository at this point in the history
  • Loading branch information
mmsqe committed Oct 27, 2023
2 parents 6b80a9d + c05c9c6 commit e174577
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 40 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- [#1215](https://github.com/crypto-org-chain/cronos/pull/1215) Update ethermint to fix of concurrent write in fee history.
- [#1217](https://github.com/crypto-org-chain/cronos/pull/1217) Use the default chain-id behavour in sdk.
- [#1216](https://github.com/crypto-org-chain/cronos/pull/1216) Update ethermint to fix of avoid redundant parse chainID from gensis when start server.
- [#1230](https://github.com/crypto-org-chain/cronos/pull/1230) Fix mem store in versiondb multistore.

*October 17, 2023*

Expand Down
34 changes: 17 additions & 17 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,23 +402,6 @@ func New(

keys, memKeys, tkeys := StoreKeys(skipGravity)

// load state streaming if enabled
if _, _, err := streaming.LoadStreamingServices(bApp, appOpts, appCodec, logger, keys); err != nil {
fmt.Printf("failed to load state streaming: %s", err)
os.Exit(1)
}

// wire up the versiondb's `StreamingService` and `MultiStore`.
streamers := cast.ToStringSlice(appOpts.Get("store.streamers"))
var qms sdk.MultiStore
if slices.Contains(streamers, "versiondb") {
var err error
qms, err = setupVersionDB(homePath, bApp, keys, tkeys, memKeys)
if err != nil {
panic(err)
}
}

app := &App{
BaseApp: bApp,
cdc: cdc,
Expand Down Expand Up @@ -868,6 +851,23 @@ func New(
app.MountTransientStores(tkeys)
app.MountMemoryStores(memKeys)

// load state streaming if enabled
if _, _, err := streaming.LoadStreamingServices(bApp, appOpts, appCodec, logger, keys); err != nil {
fmt.Printf("failed to load state streaming: %s", err)
os.Exit(1)
}

// wire up the versiondb's `StreamingService` and `MultiStore`.
streamers := cast.ToStringSlice(appOpts.Get("store.streamers"))
var qms sdk.MultiStore
if slices.Contains(streamers, "versiondb") {
var err error
qms, err = app.setupVersionDB(homePath, keys, tkeys, memKeys)
if err != nil {
panic(err)
}
}

// initialize BaseApp
app.SetInitChainer(app.InitChainer)
app.SetPreBlocker(app.PreBlocker)
Expand Down
6 changes: 2 additions & 4 deletions app/versiondb.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,14 @@ import (
"os"
"path/filepath"

"github.com/cosmos/cosmos-sdk/baseapp"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/crypto-org-chain/cronos/versiondb"
"github.com/crypto-org-chain/cronos/versiondb/tsrocksdb"
)

func setupVersionDB(
func (app *App) setupVersionDB(
homePath string,
app *baseapp.BaseApp,
keys map[string]*storetypes.KVStoreKey,
tkeys map[string]*storetypes.TransientStoreKey,
memKeys map[string]*storetypes.MemoryStoreKey,
Expand All @@ -39,7 +37,7 @@ func setupVersionDB(
service := versiondb.NewStreamingService(versionDB, exposeStoreKeys)
app.SetStreamingService(service)

verDB := versiondb.NewMultiStore(versionDB, exposeStoreKeys)
verDB := versiondb.NewMultiStore(app.CommitMultiStore(), versionDB, exposeStoreKeys)
verDB.MountTransientStores(tkeys)
verDB.MountMemoryStores(memKeys)

Expand Down
4 changes: 1 addition & 3 deletions app/versiondb_placeholder.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ package app
import (
"errors"

"github.com/cosmos/cosmos-sdk/baseapp"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)

func setupVersionDB(
func (app *App) setupVersionDB(
homePath string,
app *baseapp.BaseApp,
keys map[string]*storetypes.KVStoreKey,
tkeys map[string]*storetypes.TransientStoreKey,
memKeys map[string]*storetypes.MemoryStoreKey,
Expand Down
2 changes: 1 addition & 1 deletion integration_tests/test_ica_precompile.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def test_call(ibc):
name = "signer2"
addr = ADDRS[name]
contract = w3.eth.contract(address=CONTRACT, abi=contract_info)
data = {"from": ADDRS[name], "gas": 400000}
data = {"from": ADDRS[name]}
ica_address = register_acc(
cli_controller,
w3,
Expand Down
4 changes: 2 additions & 2 deletions store/rootmulti/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,12 +227,12 @@ func (rs *Store) CacheMultiStoreWithVersion(version int64) (types.CacheMultiStor

// Implements interface MultiStore
func (rs *Store) GetStore(key types.StoreKey) types.Store {
panic("uncached KVStore is not supposed to be accessed directly")
return rs.stores[key]
}

// Implements interface MultiStore
func (rs *Store) GetKVStore(key types.StoreKey) types.KVStore {
panic("uncached KVStore is not supposed to be accessed directly")
return rs.stores[key]
}

// Implements interface MultiStore
Expand Down
27 changes: 14 additions & 13 deletions versiondb/multistore.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import (
"sync"

"github.com/cosmos/cosmos-sdk/store/cachemulti"
"github.com/cosmos/cosmos-sdk/store/mem"
"github.com/cosmos/cosmos-sdk/store/transient"
"github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
Expand All @@ -19,16 +17,19 @@ type MultiStore struct {
storeKeys []types.StoreKey

// transient or memory stores
transientStores map[types.StoreKey]types.KVStore
transientStores map[types.StoreKey]struct{}

// proxy the calls for transient or mem stores to the parent
parent types.MultiStore

traceWriter io.Writer
traceContext types.TraceContext
traceContextMutex sync.Mutex
}

// NewMultiStore returns a new versiondb `MultiStore`.
func NewMultiStore(versionDB VersionStore, storeKeys []types.StoreKey) *MultiStore {
return &MultiStore{versionDB: versionDB, storeKeys: storeKeys, transientStores: make(map[types.StoreKey]types.KVStore)}
func NewMultiStore(parent types.MultiStore, versionDB VersionStore, storeKeys []types.StoreKey) *MultiStore {
return &MultiStore{versionDB: versionDB, storeKeys: storeKeys, parent: parent, transientStores: make(map[types.StoreKey]struct{})}
}

// GetStoreType implements `MultiStore` interface.
Expand All @@ -39,8 +40,8 @@ func (s *MultiStore) GetStoreType() types.StoreType {
// cacheMultiStore branch out the multistore.
func (s *MultiStore) cacheMultiStore(version *int64) sdk.CacheMultiStore {
stores := make(map[types.StoreKey]types.CacheWrapper, len(s.transientStores)+len(s.storeKeys))
for k, v := range s.transientStores {
stores[k] = v
for k := range s.transientStores {
stores[k] = s.parent.GetKVStore(k).(types.CacheWrapper)
}
for _, k := range s.storeKeys {
stores[k] = NewKVStore(s.versionDB, k, version)
Expand Down Expand Up @@ -75,24 +76,24 @@ func (s *MultiStore) GetStore(storeKey types.StoreKey) sdk.Store {

// GetKVStore implements `MultiStore` interface
func (s *MultiStore) GetKVStore(storeKey types.StoreKey) sdk.KVStore {
store, ok := s.transientStores[storeKey]
if ok {
return store
if _, ok := s.transientStores[storeKey]; ok {
return s.parent.GetKVStore(storeKey)
}
return NewKVStore(s.versionDB, storeKey, nil)
}

// MountTransientStores simlates the same behavior as sdk to support grpc query service.
func (s *MultiStore) MountTransientStores(keys map[string]*types.TransientStoreKey) {
for _, key := range keys {
s.transientStores[key] = transient.NewStore()
s.transientStores[key] = struct{}{}
}
}

// MountMemoryStores simlates the same behavior as sdk to support grpc query service.
// MountMemoryStores simlates the same behavior as sdk to support grpc query service,
// it shares the existing mem store instance.
func (s *MultiStore) MountMemoryStores(keys map[string]*types.MemoryStoreKey) {
for _, key := range keys {
s.transientStores[key] = mem.NewStore()
s.transientStores[key] = struct{}{}
}
}

Expand Down

0 comments on commit e174577

Please sign in to comment.