-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Data transfer can resume a transfer on restart #3417
Comments
@hannahhoward Please can you flesh out this issue with a description of what the problem is/logs and what the proposed solutions were ? |
@whyrusleeping Please can you assign this to me ? |
So, fyi @aarshkshah1992 this is actually fairly complicated ticket. You're welcome to take it on, but just fair warning. There are actually several steps, and I would take them on individually -- so we can do reviews and incremental improvements, even if we're not getting real user functionality till the end. I'm going to write them in the description above. |
Hi Hannah 👋 The Legacy Lotus Markets sub-system reached EOL at the end of the 31st January 2023. This ticket is being marked as Please feel free to re-open this ticket in the new markets sub-system repository at https://github.com/filecoin-project/boost if you feel that it is still relevant. Many thanks 🙏 |
Currently, when a node shuts down, if data transfers are in progress at that time -- either piece data being transferred for a storage deal or in progress retrievals -- they do not resume when the node restarts.
The end goal of this task is as follows: when I restart my node, any data transfers that were going prior to the node shutdown resume, without resending data already sent from one node to another.
This ticket involves several steps, and a fairly deep knowledge of go-graphsync, go-data-transfer, and go-fil-markets. It's also probably good to familiarize yourself with the relevant portions of the spec to understand theoretical concepts (https://beta.spec.filecoin.io/#systems__filecoin_files__data_transfer , https://beta.spec.filecoin.io/#systems__filecoin_markets -- though please be careful as these specs may be out of date).
I'll outline the approach here, though it's probably best to do in separate pieces and may require some collaboration to get up and running.
What we have so already:
graphsync/do-no-send-cids
extension. This extension is already supported in thego-graphsync
library.go-data-transfer
library which uses go-statemachine to manage state. You can see the existing data transfer state machine definition here (https://github.com/filecoin-project/go-data-transfer/blob/master/channels/channels_fsm.go)What we need:
go-data-transfer
, for the side that is receiving data, in terms the actual CIDs already received, so that we can create a Graphsync request that includes all the CIDs we already have when we restart the transfer.go-fil-markets
will revalidate a resuming request as well as a new request.The text was updated successfully, but these errors were encountered: