@@ -320,7 +320,8 @@ proc setWorkingState(connection: ELConnection) =
320320
321321proc trackEngineApiRequest (connection: ELConnection ,
322322 request: FutureBase , requestName: string ,
323- startTime: Moment , deadline: Future [void ]) =
323+ startTime: Moment , deadline: Future [void ],
324+ failureAllowed = false ) =
324325 request.addCallback do (udata: pointer ) {.gcsafe , raises : [Defect ].}:
325326 # TODO `udata` is nil here. How come?
326327 # This forces us to create a GC cycle between the Future and the closure
@@ -343,7 +344,7 @@ proc trackEngineApiRequest(connection: ELConnection,
343344 else :
344345 0
345346
346- if request.failed:
347+ if request.failed and not failureAllowed :
347348 connection.setDegradedState (requestName, statusCode, request.error.msg)
348349
349350 engine_api_responses.inc (1 , [connection.engineUrl.url, requestName, $ statusCode])
@@ -356,14 +357,16 @@ template awaitOrRaiseOnTimeout[T](fut: Future[T],
356357template trackedRequestWithTimeout [T](connection: ELConnection ,
357358 requestName: static string ,
358359 lazyRequestExpression: Future [T],
359- timeout: Duration ): T =
360+ timeout: Duration ,
361+ failureAllowed = false ): T =
360362 let
361363 connectionParam = connection
362364 startTime = Moment .now
363365 deadline = sleepAsync (timeout)
364366 request = lazyRequestExpression
365367
366- connectionParam.trackEngineApiRequest (request, requestName, startTime, deadline)
368+ connectionParam.trackEngineApiRequest (
369+ request, requestName, startTime, deadline, failureAllowed)
367370
368371 awaitWithTimeout (request, deadline):
369372 raise newException (DataProviderTimeout , " Timeout" )
@@ -976,7 +979,8 @@ proc waitELToSyncDeposits(connection: ELConnection,
976979 discard connection.trackedRequestWithTimeout (
977980 " getBlockByHash" ,
978981 rpcClient.getBlockByHash (minimalRequiredBlock),
979- web3RequestsTimeout)
982+ web3RequestsTimeout,
983+ failureAllowed = true )
980984 connection.depositContractSyncStatus = DepositContractSyncStatus .synced
981985 return
982986 except CancelledError as err:
@@ -1495,10 +1499,14 @@ when hasDepositRootChecks:
14951499 depositRoot = depositContract.get_deposit_root.call (blockNumber = blk.number)
14961500 rawCount = depositContract.get_deposit_count.call (blockNumber = blk.number)
14971501
1502+ # We allow failures on these requests becaues the clients
1503+ # are expected to prune the state data for historical blocks
14981504 connection.trackEngineApiRequest (
1499- depositRoot, " get_deposit_root" , startTime, deadline)
1505+ depositRoot, " get_deposit_root" , startTime, deadline,
1506+ failureAllowed = true )
15001507 connection.trackEngineApiRequest (
1501- rawCount, " get_deposit_count" , startTime, deadline)
1508+ rawCount, " get_deposit_count" , startTime, deadline,
1509+ failureAllowed = true )
15021510
15031511 try :
15041512 let fetchedRoot = asEth2Digest (
0 commit comments