Skip to content

Commit eb678be

Browse files
authored
Don't report an 'EL connection degraded' warning when the EL is not synced (#4761)
1 parent b8f2022 commit eb678be

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

beacon_chain/eth1/eth1_monitor.nim

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,8 @@ proc setWorkingState(connection: ELConnection) =
320320

321321
proc 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],
356357
template 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

Comments
 (0)