diff --git a/packages/util/src/common.ts b/packages/util/src/common.ts index 6541dde8..8c9678b0 100644 --- a/packages/util/src/common.ts +++ b/packages/util/src/common.ts @@ -74,7 +74,16 @@ export const processBlockByNumber = async ( // Stop blocks already pushed to job queue. They are already retried after fail. if (!syncStatus || syncStatus.chainHeadBlockNumber < blockNumber) { - await jobQueue.pushJob(QUEUE_BLOCK_PROCESSING, { kind: JOB_KIND_INDEX, blockHash, blockNumber, parentHash, timestamp }); + await jobQueue.pushJob( + QUEUE_BLOCK_PROCESSING, + { + kind: JOB_KIND_INDEX, + blockNumber: Number(blockNumber), + blockHash, + parentHash, + timestamp + } + ); } } diff --git a/packages/util/src/fill.ts b/packages/util/src/fill.ts index d4e560ab..0d3cbfc7 100644 --- a/packages/util/src/fill.ts +++ b/packages/util/src/fill.ts @@ -46,7 +46,6 @@ export const fillBlocks = async ( await eventWatcher.initEventProcessingOnCompleteHandler(); const numberOfBlocks = endBlock - startBlock + 1; - console.time(`time:fill#fillBlocks-process_block_${startBlock}`); processBlockByNumber(jobQueue, indexer, blockDelayInMilliSecs, startBlock); @@ -65,10 +64,6 @@ export const fillBlocks = async ( const { onBlockProgressEvent: { blockNumber, isComplete } } = data; if (isComplete) { - console.timeEnd(`time:fill#fillBlocks-process_block_${blockNumber}`); - - console.time(`time:fill#fillBlocks-process_block_${blockNumber + 1}`); - const blocksProcessed = blockNumber - startBlock + 1; const completePercentage = Math.round(blocksProcessed / numberOfBlocks * 100); log(`Processed ${blocksProcessed} of ${numberOfBlocks} blocks (${completePercentage}%)`); diff --git a/packages/util/src/job-runner.ts b/packages/util/src/job-runner.ts index 3449b6d3..88911530 100644 --- a/packages/util/src/job-runner.ts +++ b/packages/util/src/job-runner.ts @@ -22,6 +22,7 @@ export class JobRunner { _indexer: IndexerInterface _jobQueue: JobQueue _jobQueueConfig: JobQueueConfig + _blockProcessStartTime?: Date constructor (jobQueueConfig: JobQueueConfig, indexer: IndexerInterface, jobQueue: JobQueue) { this._jobQueueConfig = jobQueueConfig; @@ -116,9 +117,18 @@ export class JobRunner { } async _indexBlock (job: any): Promise { + const { data: { blockHash, blockNumber, parentHash, priority, timestamp } } = job; + const indexBlockStartTime = new Date(); - const { data: { blockHash, blockNumber, parentHash, priority, timestamp } } = job; + // Log time taken to complete processing of previous block. + if (this._blockProcessStartTime) { + const blockProcessDuration = indexBlockStartTime.getTime() - this._blockProcessStartTime.getTime(); + log(`time:job-runner#_indexBlock-process-block-${blockNumber - 1}: ${blockProcessDuration}ms`); + log(`Total block process time (${blockNumber - 1}): ${blockProcessDuration}ms`); + } + + this._blockProcessStartTime = indexBlockStartTime; log(`Processing block number ${blockNumber} hash ${blockHash} `); const syncStatus = await this._indexer.updateSyncStatusChainHead(blockHash, blockNumber); @@ -218,9 +228,9 @@ export class JobRunner { async _processEvents (job: any): Promise { const { blockHash } = job.data; - console.time('time:job-runner#_processEvents-get-block-process'); + console.time('time:job-runner#_processEvents-get-block-progress'); let block = await this._indexer.getBlockProgress(blockHash); - console.timeEnd('time:job-runner#_processEvents-get-block-process'); + console.timeEnd('time:job-runner#_processEvents-get-block-progress'); assert(block); console.time('time:job-runner#_processEvents-events');