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

Move locking into trieDB insert function

Co-authored-by: aaronbuchwald <aaron.buchwald56@gmail.com>
This commit is contained in:
Daniel Liu 2025-08-22 16:38:30 +08:00 committed by GitHub
parent d52bfaa5ca
commit 793293f041
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 6 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
}
@ -208,10 +206,8 @@ func (c *committer) commitLoop(db *Database) {
size = item.size
n = item.node
)
// We are pooling the trie nodes into an intermediate memory Cache
db.Lock.Lock()
// We are pooling the trie nodes into an intermediate memory cache
db.insert(hash, size, n)
db.Lock.Unlock()
if c.onleaf != nil {
switch n := n.(type) {

View file

@ -304,7 +304,10 @@ 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) {
// If the Node's already cached, skip
db.Lock.Lock()
defer db.Lock.Unlock()
// If the node's already cached, skip
if _, ok := db.dirties[hash]; ok {
return
}