Mount every single store with its own DB

This commit is contained in:
Adrian Brink 2018-03-28 14:33:48 +02:00
parent d0eb05b162
commit 8574f923e8
No known key found for this signature in database
GPG Key ID: F61053D3FBD06353
3 changed files with 28 additions and 6 deletions

View File

@ -54,6 +54,7 @@ type BaseApp struct {
var _ abci.Application = (*BaseApp)(nil) var _ abci.Application = (*BaseApp)(nil)
// Create and name new BaseApp // Create and name new BaseApp
// NOTE: The db is used to store the version number for now.
func NewBaseApp(name string, logger log.Logger, db dbm.DB) *BaseApp { func NewBaseApp(name string, logger log.Logger, db dbm.DB) *BaseApp {
return &BaseApp{ return &BaseApp{
Logger: logger, Logger: logger,
@ -70,15 +71,16 @@ func (app *BaseApp) Name() string {
} }
// Mount a store to the provided key in the BaseApp multistore // Mount a store to the provided key in the BaseApp multistore
// Broken until #532 is implemented.
func (app *BaseApp) MountStoresIAVL(keys ...*sdk.KVStoreKey) { func (app *BaseApp) MountStoresIAVL(keys ...*sdk.KVStoreKey) {
for _, key := range keys { for _, key := range keys {
app.MountStore(key, sdk.StoreTypeIAVL) app.MountStore(key, sdk.StoreTypeIAVL, app.db)
} }
} }
// Mount a store to the provided key in the BaseApp multistore // Mount a store to the provided key in the BaseApp multistore
func (app *BaseApp) MountStore(key sdk.StoreKey, typ sdk.StoreType) { func (app *BaseApp) MountStore(key sdk.StoreKey, typ sdk.StoreType, db dbm.DB) {
app.cms.MountStoreWithDB(key, typ, app.db) app.cms.MountStoreWithDB(key, typ, db)
} }
// nolint - Set functions // nolint - Set functions

View File

@ -2,6 +2,8 @@ package app
import ( import (
"encoding/json" "encoding/json"
"os"
"path/filepath"
abci "github.com/tendermint/abci/types" abci "github.com/tendermint/abci/types"
oldwire "github.com/tendermint/go-wire" oldwire "github.com/tendermint/go-wire"
@ -66,12 +68,30 @@ func NewBasecoinApp(logger log.Logger, db dbm.DB) *BasecoinApp {
AddRoute("ibc", ibc.NewHandler(ibcMapper, coinKeeper)). AddRoute("ibc", ibc.NewHandler(ibcMapper, coinKeeper)).
AddRoute("staking", staking.NewHandler(stakeKeeper)) AddRoute("staking", staking.NewHandler(stakeKeeper))
rootDir := os.ExpandEnv("$HOME/.basecoind")
dbMain, err := dbm.NewGoLevelDB("basecoin-main", filepath.Join(rootDir, "data"))
if err != nil {
cmn.Exit(err.Error())
}
dbIBC, err := dbm.NewGoLevelDB("basecoin-ibc", filepath.Join(rootDir, "data"))
if err != nil {
cmn.Exit(err.Error())
}
dbStaking, err := dbm.NewGoLevelDB("basecoin-staking", filepath.Join(rootDir, "data"))
if err != nil {
cmn.Exit(err.Error())
}
// initialize BaseApp // initialize BaseApp
app.SetTxDecoder(app.txDecoder) app.SetTxDecoder(app.txDecoder)
app.SetInitChainer(app.initChainer) app.SetInitChainer(app.initChainer)
app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore) app.MountStore(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain)
app.MountStore(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC)
app.MountStore(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking)
// NOTE: Broken until #532 lands
//app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore)
app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper)) app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper))
err := app.LoadLatestVersion(app.capKeyMainStore) err = app.LoadLatestVersion(app.capKeyMainStore)
if err != nil { if err != nil {
cmn.Exit(err.Error()) cmn.Exit(err.Error())
} }

View File

@ -30,7 +30,7 @@ func main() {
var baseApp = bam.NewBaseApp("kvstore", logger, db) var baseApp = bam.NewBaseApp("kvstore", logger, db)
// Set mounts for BaseApp's MultiStore. // Set mounts for BaseApp's MultiStore.
baseApp.MountStore(capKeyMainStore, sdk.StoreTypeIAVL) baseApp.MountStoresIAVL(capKeyMainStore)
// Set Tx decoder // Set Tx decoder
baseApp.SetTxDecoder(decodeTx) baseApp.SetTxDecoder(decodeTx)