forked from cerc-io/plugeth
core, trie: flush preimages to db on blockchain close (#25533)
* core, trie: flush preimages to db on database close Co-authored-by: rjl493456442 <garyrong0905@gmail.com> * rename Close to CommitPreimages for clarity * core, trie: nitpick fixes Co-authored-by: rjl493456442 <garyrong0905@gmail.com> Co-authored-by: Péter Szilágyi <peterke@gmail.com>
This commit is contained in:
parent
c4ab7d2291
commit
12185e40e0
@ -893,6 +893,10 @@ func (bc *BlockChain) Stop() {
|
|||||||
log.Error("Dangling trie nodes after full cleanup")
|
log.Error("Dangling trie nodes after full cleanup")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Flush the collected preimages to disk
|
||||||
|
if err := bc.stateCache.TrieDB().CommitPreimages(); err != nil {
|
||||||
|
log.Error("Failed to commit trie preimages", "err", err)
|
||||||
|
}
|
||||||
// Ensure all live cached entries be saved into disk, so that we can skip
|
// Ensure all live cached entries be saved into disk, so that we can skip
|
||||||
// cache warmup when node restarts.
|
// cache warmup when node restarts.
|
||||||
if bc.cacheConfig.TrieCleanJournal != "" {
|
if bc.cacheConfig.TrieCleanJournal != "" {
|
||||||
|
@ -852,3 +852,16 @@ func (db *Database) SaveCachePeriodically(dir string, interval time.Duration, st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CommitPreimages flushes the dangling preimages to disk. It is meant to be
|
||||||
|
// called when closing the blockchain object, so that preimages are persisted
|
||||||
|
// to the database.
|
||||||
|
func (db *Database) CommitPreimages() error {
|
||||||
|
db.lock.Lock()
|
||||||
|
defer db.lock.Unlock()
|
||||||
|
|
||||||
|
if db.preimages == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return db.preimages.commit(true)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user