Merge pull request #2430 from bas-vk/chaincmd

cmd/utils: bugfix where database is opened multiple times
This commit is contained in:
Péter Szilágyi 2016-04-11 13:21:47 +03:00
commit 8abf06d378

View File

@ -776,16 +776,20 @@ func SetupNetwork(ctx *cli.Context) {
params.TargetGasLimit = common.String2Big(ctx.GlobalString(TargetGasLimitFlag.Name)) params.TargetGasLimit = common.String2Big(ctx.GlobalString(TargetGasLimitFlag.Name))
} }
// MustMakeChainConfig reads the chain configuration from the given database. // MustMakeChainConfig reads the chain configuration from the database in ctx.Datadir.
func MustMakeChainConfig(ctx *cli.Context) *core.ChainConfig { func MustMakeChainConfig(ctx *cli.Context) *core.ChainConfig {
var ( db := MakeChainDatabase(ctx)
db = MakeChainDatabase(ctx)
genesis = core.GetBlock(db, core.GetCanonicalHash(db, 0))
)
defer db.Close() defer db.Close()
return MustMakeChainConfigFromDb(ctx, db)
}
// MustMakeChainConfigFromDb reads the chain configuration from the given database.
func MustMakeChainConfigFromDb(ctx *cli.Context, db ethdb.Database) *core.ChainConfig {
genesis := core.GetBlock(db, core.GetCanonicalHash(db, 0))
if genesis != nil { if genesis != nil {
// Exsting genesis block, use stored config if available. // Existing genesis block, use stored config if available.
storedConfig, err := core.GetChainConfig(db, genesis.Hash()) storedConfig, err := core.GetChainConfig(db, genesis.Hash())
if err == nil { if err == nil {
return storedConfig return storedConfig
@ -829,7 +833,7 @@ func MakeChain(ctx *cli.Context) (chain *core.BlockChain, chainDb ethdb.Database
} }
} }
chainConfig := MustMakeChainConfig(ctx) chainConfig := MustMakeChainConfigFromDb(ctx, chainDb)
var eventMux event.TypeMux var eventMux event.TypeMux
chain, err = core.NewBlockChain(chainDb, chainConfig, ethash.New(), &eventMux) chain, err = core.NewBlockChain(chainDb, chainConfig, ethash.New(), &eventMux)