rundler
rundler copied to clipboard
[builder] If conditional sending fails, remove UOs from mempool
Describe the bug Currently if a conditional send fails the builder will loop trying to send the same UO, which will always fail since its already captured the bad state. The offending UO should be removed from the pool.
Arbitrum currently doesn't return the actual address/slot that caused the issue, so it may be difficult to determine which UO caused the issue. The option may be to just remove every UO from the bundle.
To reproduce Steps to reproduce the behavior:
- Intentionally cause Rundler simulation to capture bad conditional values. This requires a code change.
- Send a UO and watch bundling logs.
Expected behavior
- The offending UO should be removed from the pool.
Logs
2024-04-12T13:47:28.121490Z ERROR rundler_builder::bundle_sender: Failed to send bundle. Will retry next block: Other(
JsonRpcClientError(
JsonRpcError(
JsonRpcError {
code: -32000,
message: "Storage slot value condition not met",
data: None,
},
),
),
)
will repeat.