Skip to content

Commit d927cbb

Browse files
authored
Merge pull request #17282 from karalabe/trie-flushlist-fixes
trie: handle removing the freshest node too
2 parents 2fbc454 + 8a9c31a commit d927cbb

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

trie/database.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -475,9 +475,14 @@ func (db *Database) dereference(child common.Hash, parent common.Hash) {
475475
}
476476
if node.parents == 0 {
477477
// Remove the node from the flush-list
478-
if child == db.oldest {
478+
switch child {
479+
case db.oldest:
479480
db.oldest = node.flushNext
480-
} else {
481+
db.nodes[node.flushNext].flushPrev = common.Hash{}
482+
case db.newest:
483+
db.newest = node.flushPrev
484+
db.nodes[node.flushPrev].flushNext = common.Hash{}
485+
default:
481486
db.nodes[node.flushPrev].flushNext = node.flushNext
482487
db.nodes[node.flushNext].flushPrev = node.flushPrev
483488
}
@@ -697,9 +702,14 @@ func (db *Database) uncache(hash common.Hash) {
697702
return
698703
}
699704
// Node still exists, remove it from the flush-list
700-
if hash == db.oldest {
705+
switch hash {
706+
case db.oldest:
701707
db.oldest = node.flushNext
702-
} else {
708+
db.nodes[node.flushNext].flushPrev = common.Hash{}
709+
case db.newest:
710+
db.newest = node.flushPrev
711+
db.nodes[node.flushPrev].flushNext = common.Hash{}
712+
default:
703713
db.nodes[node.flushPrev].flushNext = node.flushNext
704714
db.nodes[node.flushNext].flushPrev = node.flushPrev
705715
}

0 commit comments

Comments
 (0)