mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
Move locking into trieDB insert function Co-authored-by: aaronbuchwald <aaron.buchwald56@gmail.com>
This commit is contained in:
parent
d52bfaa5ca
commit
793293f041
2 changed files with 5 additions and 6 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue