Retry failed RPC calls on error#741
Closed
evanlinjin wants to merge 6 commits intobitcoindevkit:masterfrom
Closed
Conversation
`RpcImportParams` keeps track of the scriptPubKey derivation index to start from for the next call to `importdescripts`/`importmulti`, thus avoiding re-importing into Bitcoin Core.
* Add `RpcSyncParams::page_size` that restricts req/resp array count for various RPC calls. * Add `pagenated_import` function.
Whenever the transport errors with "WouldBlock" we wait a bit and retry the call. Related to bitcoindevkit#650, should at least fix the errors with RPC
cafd917 to
9d8cc0c
Compare
Bitcoin Core returns code -4 during scriptPubKey/descriptor import when it is still rescanning the wallet. This PR waits until the rescan completes before continuing sync as if it was a successful import. The caveat of this approach is that a sync cycle may miss out on importing some scriptPubKeys. Also, re-import logic is not ideal as network interruptions or parallel requests will result in strange behavior. TODO: This may not be this best solution.
9d8cc0c to
987c125
Compare
Member
Author
|
@afilini do you think this is still worth working on? |
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.
This PR replaces #707 (which attempted to fix #650), but is based on top of work done in #740.
Description
Refer to #707 and #740
I don't think we can ever fix #650 fully, however the work done in this PR seems to reduce the failure rate.
In addition to the work done by @afilini in #707, this PR introduces logic that catches error code -4 during descriptor/scriptPubKey import, and treats it like a successful import (so we continue syncing as usual). The caveat of this is that some sync cycles will miss out on importing some scriptPubKeys/descriptors, but is this better than a complete failure?
Checklists
All Submissions:
cargo fmtandcargo clippybefore committingBugfixes:
* [ ] This pull request breaks the existing API* [ ] I've added tests to reproduce the issue which are now passing