good morning!!!!

Skip to content
Snippets Groups Projects
Unverified Commit cf026fdd authored by Alex Sharov's avatar Alex Sharov Committed by GitHub
Browse files

Rpcdaemon race on chainConfig set (#2617)

parent 658315c2
No related branches found
No related tags found
No related merge requests found
...@@ -97,10 +97,10 @@ type EthAPI interface { ...@@ -97,10 +97,10 @@ type EthAPI interface {
} }
type BaseAPI struct { type BaseAPI struct {
filters *filters.Filters filters *filters.Filters
_chainConfig *params.ChainConfig _chainConfig *params.ChainConfig
_genesis *types.Block _genesis *types.Block
_genesisSetOnce sync.Once _genesisLock sync.RWMutex
} }
func NewBaseApi(f *filters.Filters) *BaseAPI { func NewBaseApi(f *filters.Filters) *BaseAPI {
...@@ -119,23 +119,26 @@ func (api *BaseAPI) genesis(tx kv.Tx) (*types.Block, error) { ...@@ -119,23 +119,26 @@ func (api *BaseAPI) genesis(tx kv.Tx) (*types.Block, error) {
} }
func (api *BaseAPI) chainConfigWithGenesis(tx kv.Tx) (*params.ChainConfig, *types.Block, error) { func (api *BaseAPI) chainConfigWithGenesis(tx kv.Tx) (*params.ChainConfig, *types.Block, error) {
if api._chainConfig != nil { api._genesisLock.RLock()
return api._chainConfig, api._genesis, nil cc, genesisBlock := api._chainConfig, api._genesis
} api._genesisLock.RUnlock()
if cc != nil {
return cc, genesisBlock, nil
}
genesisBlock, err := rawdb.ReadBlockByNumber(tx, 0) genesisBlock, err := rawdb.ReadBlockByNumber(tx, 0)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
cc, err := rawdb.ReadChainConfig(tx, genesisBlock.Hash()) cc, err = rawdb.ReadChainConfig(tx, genesisBlock.Hash())
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
if cc != nil && genesisBlock != nil { if cc != nil && genesisBlock != nil {
api._genesisSetOnce.Do(func() { api._genesisLock.Lock()
api._genesis = genesisBlock api._genesis = genesisBlock
api._chainConfig = cc api._chainConfig = cc
}) api._genesisLock.Unlock()
} }
return cc, genesisBlock, nil return cc, genesisBlock, nil
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment