You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RPC node doesn't retry sending transactions, so each client has to implement the same retry algorithm, and lazy clients probably won't implement exponential backoff, causing unnecessary network congestion.
Proposed Solution
Add RpcClient::send_transaction_and_wait_until_accepted() and corresponding JSON RPC API. The RPC node should retry on behalf of the client. It should share the same retry code as what is used for #9400.
Ideally, the RPC node implementation could use async/await, not one thread per connection.
That can pay the transaction fee (based on the max confirmed bank of the RPC node)
Only retry transactions until their blockhash is no longer known to the RPC node
This could just be a simple queue that is checked every ~5-10 seconds. Once a queued transaction's blockhash is no longer known, or the signature shows up in the status cache then drop it.
Problem
RPC node doesn't retry sending transactions, so each client has to implement the same retry algorithm, and lazy clients probably won't implement exponential backoff, causing unnecessary network congestion.
Proposed Solution
Add
RpcClient::send_transaction_and_wait_until_accepted()
and corresponding JSON RPC API. The RPC node should retry on behalf of the client. It should share the same retry code as what is used for #9400.Ideally, the RPC node implementation could use async/await, not one thread per connection.
cc: @mvines @CriesofCarrots @aeyakovenko
The text was updated successfully, but these errors were encountered: