core: fix unconditional MPT collapsing

It should depend on EnableStateRoot.
This commit is contained in:
Roman Khimov 2020-06-24 14:41:57 +03:00
parent 6d5e70163d
commit ea17793aee

View file

@ -877,13 +877,13 @@ func (bc *Blockchain) storeBlock(block *block.Block) error {
} }
if bc.config.EnableStateRoot { if bc.config.EnableStateRoot {
bc.dao.MPT.Flush() bc.dao.MPT.Flush()
}
// Every persist cycle we also compact our in-memory MPT. // Every persist cycle we also compact our in-memory MPT.
persistedHeight := atomic.LoadUint32(&bc.persistedHeight) persistedHeight := atomic.LoadUint32(&bc.persistedHeight)
if persistedHeight == block.Index-1 { if persistedHeight == block.Index-1 {
// 10 is good and roughly estimated to fit remaining trie into 1M of memory. // 10 is good and roughly estimated to fit remaining trie into 1M of memory.
bc.dao.MPT.Collapse(10) bc.dao.MPT.Collapse(10)
} }
}
bc.topBlock.Store(block) bc.topBlock.Store(block)
atomic.StoreUint32(&bc.blockHeight, block.Index) atomic.StoreUint32(&bc.blockHeight, block.Index)
bc.memPool.RemoveStale(bc.isTxStillRelevant) bc.memPool.RemoveStale(bc.isTxStillRelevant)