1
1
import type { ethers } from 'ethers'
2
- import { retryOnNull } from '@ora-io/utils'
2
+ import { timeoutWithRetry } from '@ora-io/utils'
3
3
import { ETH_BLOCK_COUNT_ONE_HOUR } from '../../constants'
4
4
import type { Providers } from '../../types/w3'
5
5
import type { CrossCheckFromParam , CrossCheckRangeParam , CrossCheckRetroParam , SimpleLog } from './interface'
@@ -34,7 +34,11 @@ export class BaseCrossChecker {
34
34
35
35
// define from, to
36
36
// TODO: use blockNumber for performance
37
- const block = await retryOnNull ( async ( ) => await this . provider . provider ?. getBlock ( 'latest' ) )
37
+ const block = await timeoutWithRetry ( ( ) => this . provider . provider . getBlock ( 'latest' ) , 15 * 1000 , 3 )
38
+ if ( ! block ) {
39
+ console . warn ( 'crosscheck failed to get latest block' )
40
+ return
41
+ }
38
42
const options : CrossCheckRangeParam = {
39
43
...ccrOptions ,
40
44
fromBlock : block . number - retroBlockCount ,
@@ -53,8 +57,11 @@ export class BaseCrossChecker {
53
57
ccfOptions : CrossCheckFromParam ,
54
58
) {
55
59
// TODO: use blockNumber for performance
56
- const block = await retryOnNull ( async ( ) => await this . provider . provider ?. getBlock ( 'latest' ) )
57
-
60
+ const block = await timeoutWithRetry ( ( ) => this . provider . provider . getBlock ( 'latest' ) , 15 * 1000 , 3 )
61
+ if ( ! block ) {
62
+ console . warn ( 'crosscheck failed to get latest block' )
63
+ return
64
+ }
58
65
// suggest use large retroBlockCount
59
66
if ( block . number - ccfOptions . fromBlock < ETH_BLOCK_COUNT_ONE_HOUR )
60
67
console . warn ( 'crosscheck retroBlockCount too low, recommend crosscheck interval >= 1 hour' )
@@ -105,7 +112,7 @@ export class BaseCrossChecker {
105
112
...( topics && { topics } ) ,
106
113
}
107
114
if ( this . provider . provider ) {
108
- const logs = await this . provider . provider ? .getLogs ( params )
115
+ const logs = await timeoutWithRetry ( ( ) => this . provider . provider . getLogs ( params ) , 15 * 1000 , 3 )
109
116
// get ignoreLogs keys
110
117
const ignoreLogs = options . ignoreLogs
111
118
0 commit comments