trie: move locking into trieDB insert method (#25030)

Move locking into trieDB insert function
This commit is contained in:
aaronbuchwald 2022-06-07 02:02:04 -04:00 committed by GitHub
parent 096daa9a7d
commit 6b3e6cb2ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 4 deletions

View File

@ -193,9 +193,7 @@ func (c *committer) store(n node, db *Database) node {
} else if db != nil {
// No leaf-callback used, but there's still a database. Do serial
// insertion
db.lock.Lock()
db.insert(common.BytesToHash(hash), size, n)
db.lock.Unlock()
}
return hash
}
@ -209,9 +207,7 @@ func (c *committer) commitLoop(db *Database) {
n = item.node
)
// We are pooling the trie nodes into an intermediate memory cache
db.lock.Lock()
db.insert(hash, size, n)
db.lock.Unlock()
if c.onleaf != nil {
switch n := n.(type) {

View File

@ -310,6 +310,9 @@ func (db *Database) DiskDB() ethdb.KeyValueStore {
// All nodes inserted by this function will be reference tracked
// and in theory should only used for **trie nodes** insertion.
func (db *Database) insert(hash common.Hash, size int, node node) {
db.lock.Lock()
defer db.lock.Unlock()
// If the node's already cached, skip
if _, ok := db.dirties[hash]; ok {
return