Address PR comments
This commit is contained in:
parent
4d6ddf92db
commit
f2047cc503
@ -155,12 +155,14 @@ func makeFullNode(ctx *cli.Context) *node.Node {
|
|||||||
if ctx.GlobalIsSet(utils.ConstantinopleOverrideFlag.Name) {
|
if ctx.GlobalIsSet(utils.ConstantinopleOverrideFlag.Name) {
|
||||||
cfg.Eth.ConstantinopleOverride = new(big.Int).SetUint64(ctx.GlobalUint64(utils.ConstantinopleOverrideFlag.Name))
|
cfg.Eth.ConstantinopleOverride = new(big.Int).SetUint64(ctx.GlobalUint64(utils.ConstantinopleOverrideFlag.Name))
|
||||||
}
|
}
|
||||||
if ctx.GlobalBool(utils.StateDiffFlag.Name) {
|
|
||||||
cfg.Eth.StateDiff = true
|
|
||||||
}
|
|
||||||
|
|
||||||
utils.RegisterEthService(stack, &cfg.Eth)
|
utils.RegisterEthService(stack, &cfg.Eth)
|
||||||
|
|
||||||
|
if ctx.GlobalBool(utils.StateDiffFlag.Name) {
|
||||||
|
cfg.Eth.StateDiff = true
|
||||||
|
utils.RegisterStateDiffService(stack, ctx)
|
||||||
|
}
|
||||||
|
|
||||||
if ctx.GlobalBool(utils.DashboardEnabledFlag.Name) {
|
if ctx.GlobalBool(utils.DashboardEnabledFlag.Name) {
|
||||||
utils.RegisterDashboardService(stack, &cfg.Dashboard, gitCommit)
|
utils.RegisterDashboardService(stack, &cfg.Dashboard, gitCommit)
|
||||||
}
|
}
|
||||||
@ -185,9 +187,6 @@ func makeFullNode(ctx *cli.Context) *node.Node {
|
|||||||
utils.RegisterEthStatsService(stack, cfg.Ethstats.URL)
|
utils.RegisterEthStatsService(stack, cfg.Ethstats.URL)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.GlobalBool(utils.StateDiffFlag.Name) {
|
|
||||||
utils.RegisterStateDiffService(stack, ctx)
|
|
||||||
}
|
|
||||||
return stack
|
return stack
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -929,9 +929,6 @@ func (bc *BlockChain) WriteBlockWithoutState(block *types.Block, td *big.Int) (e
|
|||||||
|
|
||||||
func (bc *BlockChain) AddToStateDiffProcessedCollection(hash common.Hash) {
|
func (bc *BlockChain) AddToStateDiffProcessedCollection(hash common.Hash) {
|
||||||
count, ok := bc.stateDiffsProcessed[hash]
|
count, ok := bc.stateDiffsProcessed[hash]
|
||||||
if count > 1 {
|
|
||||||
log.Error("count is too high", "count", count, "hash", hash.Hex())
|
|
||||||
}
|
|
||||||
|
|
||||||
if ok {
|
if ok {
|
||||||
count++
|
count++
|
||||||
@ -1015,28 +1012,14 @@ func (bc *BlockChain) WriteBlockWithState(block *types.Block, receipts []*types.
|
|||||||
}
|
}
|
||||||
|
|
||||||
if bc.cacheConfig.ProcessStateDiffs {
|
if bc.cacheConfig.ProcessStateDiffs {
|
||||||
count, ok := bc.stateDiffsProcessed[root.(common.Hash)]
|
if !bc.allowedRootToBeDereferenced(root.(common.Hash)) {
|
||||||
//if we haven't processed the statediff for a given state root and it's child, don't dereference it yet
|
|
||||||
if !ok {
|
|
||||||
log.Debug("Current root NOT found root in stateDiffsProcessed", "root", root.(common.Hash).Hex())
|
|
||||||
bc.triegc.Push(root, number)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if count < 2 {
|
|
||||||
log.Debug("Current root has not yet been processed for it's child", "root", root.(common.Hash).Hex())
|
|
||||||
bc.triegc.Push(root, number)
|
bc.triegc.Push(root, number)
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
log.Debug("Current root found in stateDiffsProcessed collection with a count of 2, okay to dereference",
|
|
||||||
"root", root.(common.Hash).Hex(),
|
|
||||||
"blockNumber", uint64(-number),
|
|
||||||
"size of stateDiffsProcessed", len(bc.stateDiffsProcessed))
|
|
||||||
|
|
||||||
delete(bc.stateDiffsProcessed, root.(common.Hash))
|
delete(bc.stateDiffsProcessed, root.(common.Hash))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debug("Dereferencing", "root", root.(common.Hash).Hex())
|
|
||||||
triedb.Dereference(root.(common.Hash))
|
triedb.Dereference(root.(common.Hash))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1091,6 +1074,13 @@ func (bc *BlockChain) WriteBlockWithState(block *types.Block, receipts []*types.
|
|||||||
return status, nil
|
return status, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if we haven't processed the statediff for a given state root and it's child, don't dereference it yet
|
||||||
|
func (bc *BlockChain) allowedRootToBeDereferenced(root common.Hash) bool {
|
||||||
|
diffProcessedForSelfAndChildCount := 2
|
||||||
|
count := bc.stateDiffsProcessed[root]
|
||||||
|
return count >= diffProcessedForSelfAndChildCount
|
||||||
|
}
|
||||||
|
|
||||||
// addFutureBlock checks if the block is within the max allowed window to get
|
// addFutureBlock checks if the block is within the max allowed window to get
|
||||||
// accepted for future processing, and returns an error if the block is too far
|
// accepted for future processing, and returns an error if the block is too far
|
||||||
// ahead and was not added.
|
// ahead and was not added.
|
||||||
|
Loading…
Reference in New Issue
Block a user