fix: add snapshot root

This commit is contained in:
jsvisa 2025-08-20 16:26:38 +08:00 committed by Gary Rong
parent fa1970fba7
commit 64cfce5b5d

View file

@ -347,8 +347,21 @@ wait:
var ( var (
updates = make(map[common.Hash]*stateUpdate) updates = make(map[common.Hash]*stateUpdate)
children = make(map[common.Hash][]common.Hash) children = make(map[common.Hash][]common.Hash)
done = make(chan buildResult) done chan buildResult
) )
// Add snapshot root to updates map when snapshot completes
if root := rawdb.ReadSnapshotRoot(t.db); root != (common.Hash{}) {
var number uint64
if recoveryNumber := rawdb.ReadSnapshotRecoveryNumber(t.db); recoveryNumber != nil {
number = *recoveryNumber
}
updates[root] = &stateUpdate{
root: root,
blockNumber: number,
}
}
for { for {
select { select {
case u := <-t.updateCh: case u := <-t.updateCh:
@ -356,6 +369,10 @@ wait:
children[u.originRoot] = append(children[u.originRoot], u.root) children[u.originRoot] = append(children[u.originRoot], u.root)
case <-ticker.C: case <-ticker.C:
// Only check timer if build hasn't started yet
if done != nil {
continue
}
root := rawdb.ReadSnapshotRoot(t.db) root := rawdb.ReadSnapshotRoot(t.db)
if root == (common.Hash{}) { if root == (common.Hash{}) {
continue continue
@ -364,11 +381,9 @@ wait:
if !exists { if !exists {
continue continue
} }
if done == nil { done = make(chan buildResult)
done = make(chan buildResult) go t.build(entry.root, entry.blockNumber, done)
go t.build(entry.root, entry.blockNumber, done) log.Info("Measuring persistent state size", "root", root, "number", entry.blockNumber)
log.Info("Measuring persistent state size", "root", root, "number", entry.blockNumber)
}
case result := <-done: case result := <-done:
if result.err != nil { if result.err != nil {