From 4f8ce5be22e33a3ce0d85b85cd0c8b96af6a907c Mon Sep 17 00:00:00 2001 From: Air1 Date: Tue, 24 Mar 2020 17:51:49 +0400 Subject: [PATCH] fix(core-blockchain): allow transition to fork from idle --- packages/core-blockchain/src/blockchain.ts | 8 ++++++++ packages/core-blockchain/src/machines/blockchain.ts | 1 + 2 files changed, 9 insertions(+) diff --git a/packages/core-blockchain/src/blockchain.ts b/packages/core-blockchain/src/blockchain.ts index b68e9fee85..9af8874e1b 100644 --- a/packages/core-blockchain/src/blockchain.ts +++ b/packages/core-blockchain/src/blockchain.ts @@ -63,6 +63,7 @@ export class Blockchain implements blockchain.IBlockchain { protected blockProcessor: BlockProcessor; private actions: any; private missedBlocks: number = 0; + private lastCheckNetworkHealthTs: number = 0; /** * Create a new blockchain manager instance. @@ -577,6 +578,13 @@ export class Blockchain implements blockchain.IBlockchain { ) { this.missedBlocks = 0; + // do not check network health here more than every 10 minutes + const nowTs = Date.now(); + if (nowTs - this.lastCheckNetworkHealthTs < 10 * 60 * 1000) { + return; + } + this.lastCheckNetworkHealthTs = nowTs; + const networkStatus = await this.p2p.getMonitor().checkNetworkHealth(); if (networkStatus.forked) { this.state.numberOfBlocksToRollback = networkStatus.blocksToRollback; diff --git a/packages/core-blockchain/src/machines/blockchain.ts b/packages/core-blockchain/src/machines/blockchain.ts index 3b67aa1b9c..7721a77ceb 100644 --- a/packages/core-blockchain/src/machines/blockchain.ts +++ b/packages/core-blockchain/src/machines/blockchain.ts @@ -36,6 +36,7 @@ export const blockchainMachine: any = Machine({ WAKEUP: "syncWithNetwork", NEWBLOCK: "newBlock", STOP: "stopped", + FORK: "fork", }, }, newBlock: {