From fa37ba39927e5e8a28a98f72a9208170ff0f2900 Mon Sep 17 00:00:00 2001 From: kumavis Date: Tue, 22 May 2018 01:58:36 -0700 Subject: [PATCH] controllers - recent-blocks - pull first historical blocks in parallel --- app/scripts/controllers/recent-blocks.js | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/app/scripts/controllers/recent-blocks.js b/app/scripts/controllers/recent-blocks.js index 1377c1ba9..033ef1d7e 100644 --- a/app/scripts/controllers/recent-blocks.js +++ b/app/scripts/controllers/recent-blocks.js @@ -119,29 +119,21 @@ class RecentBlocksController { */ async backfill() { this.blockTracker.once('block', async (block) => { - let blockNum = block.number - let recentBlocks - let state = this.store.getState() - recentBlocks = state.recentBlocks - - while (recentBlocks.length < this.historyLength) { + const currentBlockNumber = Number.parseInt(block.number, 16) + const blocksToFetch = Math.min(currentBlockNumber, this.historyLength) + const prevBlockNumber = currentBlockNumber - 1 + const targetBlockNumbers = Array(blocksToFetch).fill().map((_, index) => prevBlockNumber - index) + await Promise.all(targetBlockNumbers.map(async (targetBlockNumber) => { try { - let blockNumBn = new BN(blockNum.substr(2), 16) - const newNum = blockNumBn.subn(1).toString(10) - const newBlock = await this.getBlockByNumber(newNum) + const newBlock = await this.getBlockByNumber(targetBlockNumber) if (newBlock) { this.backfillBlock(newBlock) - blockNum = newBlock.number } - - state = this.store.getState() - recentBlocks = state.recentBlocks } catch (e) { log.error(e) } - await this.wait() - } + })) }) }