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

Move locking into trieDB insert function
This commit is contained in:
aaronbuchwald
2022-06-07 08:02:04 +02:00
committed by GitHub
parent 096daa9a7d
commit 6b3e6cb2ab
2 changed files with 3 additions and 4 deletions
-4
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) {
+3
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