Problem
Public HTTP/WS and arc-consensus share one Reth EthApi, so they share one eth_call semaphore (--rpc.max-blocking-io-requests, default 256).
When client eth_call fills that queue, consensus get_signing_validator_set waits, then ETH_DEFAULT_TIMEOUT (1s) kills the CL. A second IPC path on the same EthApi does not help: the semaphore is per API, not per socket.
Proposal
Add --consensus-ipcpath. When set, execution opens a second jsonrpsee IPC on its own EthApi (16 blocking-io permits) and serves eth_* plus reth_subscribePersistedBlock there. Consensus points --eth-socket at that path. The Engine API on --auth-ipc.path is unchanged.
Leave the flag unset and consensus keeps using --ipcpath. Default behavior does not change.
A reference implementation is on the closed pull request #456 (closed by the contribution gate before review). I will resubmit it with Closes: #<this issue> only after assignment.
Request
Please assign this issue to me so I can open that pull request under the contribution policy.
Problem
Public HTTP/WS and
arc-consensusshare one RethEthApi, so they share oneeth_callsemaphore (--rpc.max-blocking-io-requests, default 256).When client
eth_callfills that queue, consensusget_signing_validator_setwaits, thenETH_DEFAULT_TIMEOUT(1s) kills the CL. A second IPC path on the sameEthApidoes not help: the semaphore is per API, not per socket.Proposal
Add
--consensus-ipcpath. When set, execution opens a second jsonrpsee IPC on its ownEthApi(16 blocking-io permits) and serveseth_*plusreth_subscribePersistedBlockthere. Consensus points--eth-socketat that path. The Engine API on--auth-ipc.pathis unchanged.Leave the flag unset and consensus keeps using
--ipcpath. Default behavior does not change.A reference implementation is on the closed pull request #456 (closed by the contribution gate before review). I will resubmit it with
Closes: #<this issue>only after assignment.Request
Please assign this issue to me so I can open that pull request under the contribution policy.