diff --git a/packages/worker/src/app.service.ts b/packages/worker/src/app.service.ts index 71d82079e..f0fbaa830 100644 --- a/packages/worker/src/app.service.ts +++ b/packages/worker/src/app.service.ts @@ -15,6 +15,7 @@ import { SystemContractService } from "./contract/systemContract.service"; @Injectable() export class AppService implements OnModuleInit, OnModuleDestroy { private readonly logger: Logger; + private isHandlingBlocksRevert = false; public constructor( private readonly counterService: CounterService, @@ -43,6 +44,11 @@ export class AppService implements OnModuleInit, OnModuleDestroy { @OnEvent(BLOCKS_REVERT_DETECTED_EVENT) protected async handleBlocksRevert({ detectedIncorrectBlockNumber }: { detectedIncorrectBlockNumber: number }) { + if (this.isHandlingBlocksRevert) { + return; + } + this.isHandlingBlocksRevert = true; + this.logger.log("Stopping workers before blocks revert"); await this.stopWorkers(); @@ -50,7 +56,9 @@ export class AppService implements OnModuleInit, OnModuleDestroy { await this.blocksRevertService.handleRevert(detectedIncorrectBlockNumber); this.logger.log("Starting workers after blocks revert"); - await this.startWorkers(); + this.startWorkers(); + + this.isHandlingBlocksRevert = false; } private startWorkers() { diff --git a/packages/worker/src/block/block.watcher.ts b/packages/worker/src/block/block.watcher.ts index f491c6554..0ae3f5978 100644 --- a/packages/worker/src/block/block.watcher.ts +++ b/packages/worker/src/block/block.watcher.ts @@ -119,7 +119,7 @@ export class BlockWatcher implements OnModuleInit, OnModuleDestroy { this.logger.debug(`Last block number is set to: ${this.lastBlockchainBlockNumber}`); this.blockchainService.on("block", (blockNumber) => { - this.lastBlockchainBlockNumber = Math.max(this.lastBlockchainBlockNumber, blockNumber); + this.lastBlockchainBlockNumber = blockNumber || this.lastBlockchainBlockNumber; this.blockchainBlocksMetric.set(this.lastBlockchainBlockNumber); this.logger.debug(`Last block number is updated to: ${this.lastBlockchainBlockNumber}`); });