Skip to content

fix(tasks): retry transient source-chain RPC errors in the CCTP relay scan - #3005

Merged
sparrowDom merged 1 commit into
masterfrom
sparrow/cctp-relay-retry-source-reads
Sep 9, 2026
Merged

sparrowDom merged 1 commit into
masterfrom
sparrow/cctp-relay-retry-source-reads

Conversation

@sparrowDom

@sparrowDom sparrowDom commented Sep 9, 2026

Copy link
Copy Markdown
Member

Summary

relayCCTPMessage / crossChainRelayHyperEVM were dying on the source-chain tip scan because eth_blockNumber + eth_getLogs go through a bare ethers JsonRpcProvider with no retries. Behind BASE_PROVIDER_URL / HYPEREVM_PROVIDER_URL, load-balanced dRPC nodes intermittently return:

  • HyperEVM 400 Unknown blockgetLogs lands on a peer that has not yet seen the tip getBlockNumber just returned (failing toBlock mined the same second the run started)
  • Base 500 Temporary internal error. Please retry and 408 timeouts
    Those failures aborted the whole Talos run several times a day.

Change

  • Add withRetry (5 attempts, exponential backoff 1/2/4/8s) around the three source reads in fetchTxHashesFromCctpTransactions
  • Leave block-range selection and tx-hash dedupe unchanged (reads are idempotent)
  • Export withRetry + fetchTxHashesFromCctpTransactions for unit tests
    No deploy scripts, descriptors, or action wiring changes. Existing cross_chain_* schedules pick this up on the next runner image.

… scan

The relay actions (relayCCTPMessage, crossChainRelayHyperEVM) scan the
source chain with eth_blockNumber + eth_getLogs over a bare ethers
JsonRpcProvider that never retries. The load-balanced dRPC endpoints behind
BASE_PROVIDER_URL / HYPEREVM_PROVIDER_URL intermittently answer with
transient errors, and every one failed the whole run: 500 "Temporary
internal error. Please retry" (Base), 408 timeouts, and 400 "Unknown
block" on HyperEVM when eth_getLogs lands on a node that has not yet seen
the tip eth_blockNumber just returned (the failing toBlock was mined the
same second the run started). Wrap the three reads in a 5-attempt
exponential backoff; they are idempotent.
@sparrowDom
sparrowDom force-pushed the sparrow/cctp-relay-retry-source-reads branch from 35fb556 to 6f096d6 Compare September 9, 2026 12:39
@sparrowDom
sparrowDom merged commit 194728c into master Sep 9, 2026
12 checks passed
@sparrowDom
sparrowDom deleted the sparrow/cctp-relay-retry-source-reads branch September 9, 2026 12:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants