Skip to content

Commit

Permalink
fix: block watcher metrics and last processed block
Browse files Browse the repository at this point in the history
  • Loading branch information
mfw78 committed Feb 14, 2024
1 parent 2fb154a commit 2a45265
Showing 1 changed file with 12 additions and 16 deletions.
28 changes: 12 additions & 16 deletions src/services/chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,11 @@ export class ChainContext {
log.debug(`Watchdog timeout: ${watchdogTimeout} seconds`);
let lastBlockReceived = lastProcessedBlock;
provider.on("block", async (blockNumber: number) => {
// Intentionally don't guard the getBlock call with a try/catch block
// because we want to crash the process if this fails. This will result
// in the kubernetes pod restarting and trying to recover.
const block = await provider.getBlock(blockNumber);
try {
const block = await provider.getBlock(blockNumber);
log.debug(`New block ${blockNumber}`);

// Set the block time metric
Expand All @@ -352,23 +355,15 @@ export class ChainContext {
this
);

try {
await processBlock(this, block, events);

// Block height metric
this.registry.lastProcessedBlock = blockToRegistryBlock(block);
this.registry.write();
metrics.blockHeight.labels(chainId.toString()).set(blockNumber);
} catch {
log.error(`Error processing block ${blockNumber}`);
}

await processBlock(this, block, events);
log.debug(`Block ${blockNumber} has been processed`);
} catch (error) {
log.error(
`Error in pollContractForEvents for block ${blockNumber}`,
error
);
log.error(`Error processing block ${blockNumber}`, error);
} finally {
// Block height metric
this.registry.lastProcessedBlock = blockToRegistryBlock(block);
await this.registry.write();
metrics.blockHeight.labels(chainId.toString()).set(blockNumber);
}
});

Expand Down Expand Up @@ -445,6 +440,7 @@ export class ChainContext {
* @param events an array of conditional order created events
* @param blockNumberOverride to override the block number when polling the SDK
* @param blockTimestampOverride to override the block timestamp when polling the SDK
* @throws if there are any *unexpected errors* in processing the block
*/
async function processBlock(
context: ChainContext,
Expand Down

0 comments on commit 2a45265

Please sign in to comment.