11import { EventEmitter } from "events"
2- import { ChainConfig , Order , orderCommitment , hexToString , DecodedOrderPlacedLog } from "@hyperbridge/sdk"
2+ import { ChainConfig , Order , orderCommitment , hexToString , DecodedOrderPlacedLog , retryPromise } from "@hyperbridge/sdk"
33import { INTENT_GATEWAY_ABI } from "@/config/abis/IntentGateway"
44import { PublicClient } from "viem"
55import { ChainClientManager } from "@/services"
@@ -41,7 +41,11 @@ export class EventMonitor extends EventEmitter {
4141 )
4242 const intentGatewayAddress = this . configService . getIntentGatewayAddress ( `EVM-${ chainId } ` )
4343
44- const startBlock = await client . getBlockNumber ( )
44+ const startBlock = await retryPromise ( ( ) => client . getBlockNumber ( ) , {
45+ maxRetries : 3 ,
46+ backoffMs : 250 ,
47+ logMessage : "Failed to get start block number" ,
48+ } )
4549 this . lastScannedBlock . set ( chainId , startBlock - 1n )
4650
4751 this . logger . info ( { chainId, startBlock } , "Initializing block scanner" )
@@ -51,7 +55,6 @@ export class EventMonitor extends EventEmitter {
5155 if ( ! mutex ) return
5256
5357 if ( mutex . isLocked ( ) ) {
54- this . logger . warn ( { chainId } , "Waiting for previous scan to complete" )
5558 return
5659 }
5760
@@ -82,7 +85,11 @@ export class EventMonitor extends EventEmitter {
8285 const lastScanned = this . lastScannedBlock . get ( chainId )
8386 if ( ! lastScanned ) return
8487
85- const currentBlock = await client . getBlockNumber ( )
88+ const currentBlock = await retryPromise ( ( ) => client . getBlockNumber ( ) , {
89+ maxRetries : 3 ,
90+ backoffMs : 250 ,
91+ logMessage : "Failed to get current block number" ,
92+ } )
8693
8794 if ( currentBlock > lastScanned ) {
8895 const fromBlock = lastScanned + 1n
@@ -96,12 +103,20 @@ export class EventMonitor extends EventEmitter {
96103 "Scanning blocks" ,
97104 )
98105
99- const logs = await client . getLogs ( {
100- address : intentGatewayAddress ,
101- event : orderPlacedEvent ,
102- fromBlock,
103- toBlock : actualToBlock ,
104- } )
106+ const logs = await retryPromise (
107+ ( ) =>
108+ client . getLogs ( {
109+ address : intentGatewayAddress ,
110+ event : orderPlacedEvent ,
111+ fromBlock,
112+ toBlock : actualToBlock ,
113+ } ) ,
114+ {
115+ maxRetries : 3 ,
116+ backoffMs : 250 ,
117+ logMessage : "Failed to get logs for block scan" ,
118+ } ,
119+ )
105120
106121 if ( logs . length > 0 ) {
107122 this . logger . info (
0 commit comments