aboutsummaryrefslogtreecommitdiffstats
path: root/eth/downloader/queue.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-05-31 16:52:16 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-05-31 16:52:16 +0800
commit1d5d21726a49a1dcf06d0d1544e1bd93f4231632 (patch)
treed9ddf6637f39ab3593a8664f15723c1afdbb8549 /eth/downloader/queue.go
parent7b662103a026ee96667c8cad96dc952b7896a8af (diff)
parent4f1d92b3329572d75a20b9f9e1cccdf74aa7c79f (diff)
downloadgo-tangerine-1d5d21726a49a1dcf06d0d1544e1bd93f4231632.tar.gz
go-tangerine-1d5d21726a49a1dcf06d0d1544e1bd93f4231632.tar.zst
go-tangerine-1d5d21726a49a1dcf06d0d1544e1bd93f4231632.zip
Merge pull request #2627 from karalabe/concurrent-head-sync
eth/downloader, trie: pull head state concurrently with chain
Diffstat (limited to 'eth/downloader/queue.go')
-rw-r--r--eth/downloader/queue.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/eth/downloader/queue.go b/eth/downloader/queue.go
index 195eae4ff..01897af6d 100644
--- a/eth/downloader/queue.go
+++ b/eth/downloader/queue.go
@@ -1262,13 +1262,19 @@ func (q *queue) deliverNodeData(results []trie.SyncResult, callback func(error,
// Prepare configures the result cache to allow accepting and caching inbound
// fetch results.
-func (q *queue) Prepare(offset uint64, mode SyncMode, pivot uint64) {
+func (q *queue) Prepare(offset uint64, mode SyncMode, pivot uint64, head *types.Header) {
q.lock.Lock()
defer q.lock.Unlock()
+ // Prepare the queue for sync results
if q.resultOffset < offset {
q.resultOffset = offset
}
q.fastSyncPivot = pivot
q.mode = mode
+
+ // If long running fast sync, also start up a head stateretrieval immediately
+ if mode == FastSync && pivot > 0 {
+ q.stateScheduler = state.NewStateSync(head.Root, q.stateDatabase)
+ }
}