From 4f1d92b3329572d75a20b9f9e1cccdf74aa7c79f Mon Sep 17 00:00:00 2001 From: Péter Szilágyi Date: Fri, 27 May 2016 14:26:00 +0300 Subject: eth/downloader, trie: pull head state concurrently with chain --- eth/downloader/queue.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'eth/downloader/queue.go') 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) + } } -- cgit