[Downloader] Allow early cancel in downloader #2100
Merged
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.
Proposed changes
Downloader.Cancel()
signals fetcher threads to cancel their operation. Each listening thread terminates instantly upon receiving the cancel request. However, one of the six fetchers (importBlockResults) lacks a cancel listener, preventing instant termination.For instance, the
debug_setHead
API requires a downloader cancel before executing the delete operation. Due to the issue mentioned, the delete operation does not instantly start. Since the block import unit is 2048 at maximum, which is a considerable number, operators may experience a significant delay, leading to confusion about the command's effectiveness.This PR changes the insertion loop so that it can listen to the cancel request in the middle of up to 2048 block insertion. Previously, entire blocks downloaded should have been inserted before stopping.
Types of changes
Checklist
$ make test
)Related issues
Further comments