Repository navigation
fix(evm): treat nonce too high as a final client error - #1431
kasrakhosravi wants to merge 4 commits into
Conversation
- Fell to the server-side fallback: retried on every upstream, counted toward the breaker. - A relayer's nonce gap opened the breakers and refused its reads too.
xray — see through AI slop with deterministic architecture PR diff reviews |
|
Graphify reviews are paused for this workspace because nobody has used it in 7 days. A workspace owner can resume reviews from the Repositories page: https://app.graphify.com/erpc/repositories |
This comment has been minimized.
This comment has been minimized.
|
Lab check: relayer-failure-lab scenario 843 (OpenZeppelin Relayer v1.9.0), eRPC in front of 2 strict-nonce upstreams, 60 s HTTP 503 on both.
|
|
@kasrakhosravi we need to ensure this doesn't conflict with how we do safe nonce via consensus and sendTx broadcasting, basically no degradation in the write/send flows via erpc when there are multiple upstreams with differing views |
- A lagging upstream reads the correct next nonce as a gap; a final verdict ended the send there
|
@aramalipoor good call, it did conflict. The first commit (70ec9a6) made Fixed in 6dce2b8:
Tests, lagging upstream + fresh upstreams:
A real gap on every upstream: ≤3 upstream calls per send (main: 6, breakers open). Not re-run: relayer lab 843 on 6dce2b8. |
…errors - 6dce2b8 failed over only through a network retry round; with no network failsafe the lagging upstream's nonce too high reached the client (20 of 20 sends).
|
Lab re-run: relayer-failure-lab 843, Relayer v1.9.0, 2 strict-nonce upstreams, 60 s HTTP 503 on both. Found on 6dce2b8: failover needed a network retry policy.
Breaker 20/80,
No breaker:
|
This comment has been minimized.
This comment has been minimized.
…ls over on every method - consensus-only broadcast (no retry/hedge) returned a lagging node's nonce too high though 3 upstreams accepted; main returned the hash - e88bc15 made nonce too high final for eth_call/eth_estimateGas/eth_sendRawTransactionSync; main failed over
|
Adversarial pass on e88bc15 (fresh agent, change + claims only, runs vs main a788b61). 2 regressions found, fixed in 455f97f.
|
nonce too highhad no normalizer ruleNonceTooHighEverywhereKeepsBreakersClosed, fails on mainNonceTooHighFromLaggingUpstream*(no network retry, retry, consensus broadcast, consensus only)