Add raise_on_error=False option to batched request execution#3843
Open
genisis0x wants to merge 1 commit into
Open
Add raise_on_error=False option to batched request execution#3843genisis0x wants to merge 1 commit into
raise_on_error=False option to batched request execution#3843genisis0x wants to merge 1 commit into
Conversation
Today a single failing request in a batch propagates a `Web3RPCError` out of `RequestBatcher.execute` / `async_execute`, discarding every sibling response even when those came back successfully. That's painful for callers (relayers, indexers, multi-call aggregators) where partial results are more useful than total failure. Add a `raise_on_error` keyword (default `True`, preserving current behavior) on both batch execute entry points. When set to `False`, the manager-level batch dispatcher skips the per-request raise inside `_format_batched_response` and returns the raw RPC response dict for the failing entries — successful entries are still passed through the result formatters. Envelope-level errors (server returned a single error object instead of an array) still raise. Closes ApeWorX#3657
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Today a single failing request in a batch propagates a `Web3RPCError` out of `RequestBatcher.execute` / `async_execute`, discarding every sibling response even when those came back successfully. That's painful for callers (relayers, indexers, multi-call aggregators) where partial results are more useful than total failure.
Add a `raise_on_error` keyword (default `True`, preserving current behavior) on both batch execute entry points. When set to `False`, the manager-level batch dispatcher skips the per-request raise inside `_format_batched_response` and returns the raw RPC response dict for failing entries — successful entries are still passed through the result formatters. Envelope-level errors (server returned a single error object instead of an array) still raise.
Persistent-connection providers always raise at the socket layer today, so `raise_on_error` is only honored for stateless (HTTP) providers in this PR. The async-socket path can adopt the same flag in a follow-up once the socket-side response routing is opted-in to the flag.
Closes #3657
Test plan