-
Notifications
You must be signed in to change notification settings - Fork 14
Closed
Labels
x/igniteIssues and PRs being tracked by Team Ignite at Protocol LabsIssues and PRs being tracked by Team Ignite at Protocol Labs
Description
Background
A "push" data-transfer channel is a channel where the node that initiates the transfer sends (pushes) data to the remote peer. The steps are:
- Initiator sends a push request to Responder
- Responder opens a graphsync request to Initiator
- Initiator's graphsync handler sends the data
The push channel monitor watches the amount of data that is sent in a push data-transfer (a transfer where data is sent from the local node to the remote peer) and attempts to restart the transfer if the data rate falls too low.
It does so by listening for DataQueued and DataSent events; if there is data queued but not sent for some interval of time, it attempts to connect to the remote peer and send a restart request.
However in the situation where
- all data has been sent by the local node
- not all data has been received by the remote peer
the push channel monitor doesn't notice (because it only knows about the local node's state).
Proposed Solution
Extend the push channel monitor:
- When the initiator sends the initial request to open a push channel to the Responder:
If the Responder doesn't respond within a timeout, fail the transfer - When the initiator has sent all data to the Responder:
If the Responder doesn't send a "completed" response within a timeout, fail the transfer
Metadata
Metadata
Assignees
Labels
x/igniteIssues and PRs being tracked by Team Ignite at Protocol LabsIssues and PRs being tracked by Team Ignite at Protocol Labs