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
If the transaction sending returns an error, or if the transaction is dropped, the transaction does not appear do be sent again. It would happen though as pointed by @geoff-vball when restarting the node and it would catch up those transactions.
Description
Rather than treating a dropped transaction as fatal, we could add sent transactions to a pending queue and retry them in this scenario. If they are accepted (i.e. they produce a receipt), then they can be safely removed from the pending queue.
Expected behavior
If the transaction failed (and return an error) because of a revert, mark the transaction as "executed" and don't try to execute it again.
If it was dropped, these should have been placed in a queue and retried later while reverting the nonce or fetch it.
The text was updated successfully, but these errors were encountered:
This is not a bug. This case is intentionally treated as fatal. The block that contained the message on the sending chain will not be considered processed if the tx on the destination is dropped, and will be re-processed on the next startup.
That said, gracefully handling dropped transactions would improve overall throughput, and could make a sizable difference for certain applications where the rate of dropped transactions is high, and end-to-end latency is important. I'm going to convert this ticket to a feature request, and edit the fields of the issue description accordingly.
Context
https://github.com/ava-labs/awm-relayer/blob/f7093cb97a9dd09671e05f135a84914d17a4533e/vms/evm/destination_client.go#L185-L197
If the transaction sending returns an error, or if the transaction is dropped, the transaction does not appear do be sent again. It would happen though as pointed by @geoff-vball when restarting the node and it would catch up those transactions.
Description
Rather than treating a dropped transaction as fatal, we could add sent transactions to a pending queue and retry them in this scenario. If they are accepted (i.e. they produce a receipt), then they can be safely removed from the pending queue.
Expected behavior
If the transaction failed (and return an error) because of a revert, mark the transaction as "executed" and don't try to execute it again.
If it was dropped, these should have been placed in a queue and retried later while reverting the nonce or fetch it.
The text was updated successfully, but these errors were encountered: