-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix FallbackProvider getAnyResult() with errors #4442
Closed
staltz
wants to merge
1
commit into
ethers-io:main
from
Railgun-Community:fallback-provider-get-any-non-error-result
Closed
Fix FallbackProvider getAnyResult() with errors #4442
staltz
wants to merge
1
commit into
ethers-io:main
from
Railgun-Community:fallback-provider-get-any-non-error-result
Conversation
This file contains 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
ricmoo
added
enhancement
New feature or improvement.
on-deck
This Enhancement or Bug is currently being worked on.
next-patch
Issues scheduled for the next arch release.
v6
Issues regarding v6
labels
Nov 1, 2023
ricmoo
added a commit
that referenced
this pull request
Nov 24, 2023
This has been fixed in v6.9.0. Please let me know if you find any other issues; there is also a robust FallbackProvider test suite to help identify and create reproducible examples, which ensure no regressions. Thanks! :) |
ricmoo
added
fixed/complete
This Bug is fixed or Enhancement is complete and published.
and removed
on-deck
This Enhancement or Bug is currently being worked on.
minor-bump
Planned for the next minor version bump.
next-patch
Issues scheduled for the next arch release.
labels
Nov 27, 2023
Woodpile37
pushed a commit
to Woodpile37/ethers.js
that referenced
this pull request
Jan 14, 2024
Woodpile37
pushed a commit
to Woodpile37/ethers.js
that referenced
this pull request
Jan 14, 2024
Woodpile37
pushed a commit
to Woodpile37/ethers.js
that referenced
this pull request
Jan 14, 2024
rrw-zilliqa
added a commit
to Zilliqa/ethers.js
that referenced
this pull request
Apr 29, 2024
* docs: fixed typo in jsdocs for Wallet.createRandom (ethers-io#4461) * admin: added diff scripts for build page * admin: updated dist files * Added safe and finalized provider events (ethers-io#3921). * tests: bumped Node versions for testing (ethers-io#4451) * admin: style fix (ethers-io#4356) * More robust FallbackProvider broadcast (ethers-io#4186, ethers-io#4297, ethers-io#4442). * Account for provider config weight when kicking off a request in FallbackProvider (ethers-io#4298). * Fixed ParamType formatting causing bad tuple full and minimal ABI output (ethers-io#4329, ethers-io#4479). * Added Base network to AlchemyProvider (ethers-io#4384). * Add auto-detected static network support to providers and allow customizing socket provider options (ethers-io#4199, ethers-io#4418, ethers-io#4441). * Use provider-specified suggested priority fee when available, otherwise fallback onto existing logic of 1 gwei (ethers-io#4463). * admin: updated dist files * admin: update changelog after build-clean * docs: Fixed some grammar in getting-started (ethers-io#4486, ethers-io#4487, ethers-io#4488) * Fix uncatchable issue when sending transactions over JSON-RPC and provide some retry-recovery for missing v (ethers-io#4513). * admin: update dist files * Fix Base58 padding for string representation of binary data (ethers-io#4527). * admin: updated dist files * Limit decoded result imflation ratio from ABI-encoded data (ethers-io#4537). * admin: updated dist files * Better debugging output on fetch errors. * docs: added StaticJsonRpcProvider to migration docs * Fixed typo in Error string (ethers-io#4539). * Fix EIP-712 type aliases for uint and int (ethers-io#4541). * Added additional sepolia testnets. * Updated third-party provider network URLs (ethers-io#4542). * admin: updated dist files * Fixed normalization and abstracted EIP-712 Array parsing (ethers-io#4541). * admin: updated dist files * tests: added testing for correct thrid-party URLs * Updated thrid-part provider URLs for QuickNode. * tests: rename test suite to follow naming convention * admin: updated dist files * Normalize EIP-712 types before computing the payload (ethers-io#4541). * tests: add tests for EIP-712 payload aliases * admin: updated dist files --------- Co-authored-by: Richard Moore <me@ricmoo.com>
This was referenced May 22, 2024
This was referenced Jun 20, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
enhancement
New feature or improvement.
fixed/complete
This Bug is fixed or Enhancement is complete and published.
v6
Issues regarding v6
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.
Problem
When submitting a transaction (i.e.
broadcastTransaction
) with a FallbackProvider with 3 sub-providers (each with weight 2) and a quorum configured at3
, the_perform
will usegetAnyResult
to pluck the result from each of the sub-providers.The way
getAnyResult
works (especially whencheckQuorum
is not used due to weights being smaller than the quorum number), means that it will pick the first result, regardless if it's an error or not.In the context of broadcasting transactions, there are cases where one provider gets the transaction request, while other providers that are slower will error with
"already known"
, which in turn causes Ethers to produceSee issue #4186
Solution
In
getAnyResult
, give preference to early-returning non-error results.