mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 21:26:42 +00:00
fix: add snapshot root
This commit is contained in:
parent
fa1970fba7
commit
64cfce5b5d
1 changed files with 21 additions and 6 deletions
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue