diff options
author | Péter Szilágyi <peterke@gmail.com> | 2016-05-27 19:26:00 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2016-05-27 19:26:00 +0800 |
commit | 4f1d92b3329572d75a20b9f9e1cccdf74aa7c79f (patch) | |
tree | f44e0bf3ac947641f783c5799bf4b70c1151a5e2 /eth/downloader/queue.go | |
parent | a7434fd0085f55235acea5348db0c9247e9aac10 (diff) | |
download | go-tangerine-4f1d92b3329572d75a20b9f9e1cccdf74aa7c79f.tar.gz go-tangerine-4f1d92b3329572d75a20b9f9e1cccdf74aa7c79f.tar.zst go-tangerine-4f1d92b3329572d75a20b9f9e1cccdf74aa7c79f.zip |
eth/downloader, trie: pull head state concurrently with chain
Diffstat (limited to 'eth/downloader/queue.go')
-rw-r--r-- | eth/downloader/queue.go | 8 |
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) + } } |