Send data-transfer protocol cancel's message async to the remote peer #245
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.
We saw a problem with Dealbot deals where it got hung on deal transferring state because the Miner had manually cancelled the request. Turns out that the Miner cancels weren't getting sent to the client because the timed context we use in Lotus wasn't giving enough time to the cancellation messages for them to go through as it only uses uses a timeout of 5 seconds for the entire cancel graphsync req -> open data-transfer stream -> write cancel message to the data-transfer stream thing.
I think a good way to do this to send the data-transfer cancel message to the remote peer async so callers don't need to block on it for a good amount of time.