-
Notifications
You must be signed in to change notification settings - Fork 7
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
Documenting "unconfirmed block transfer" history #123
Comments
Marking this as a P2 for now, since "1m timeouts" are currently the most common autoretrieve error, and this is more of a data gathering task. |
I was able to replicate this locally on Boost doing retrieval testing with lassie, and it was due to an issue with the unsealing RPC connection resetting between lotus and boost. It looks like the data transfer is cancelled by Boost but instead of getting that event on the client side it's seeing the unconfirmed block. Running the retrieval:
Event Logs on Boosts side
|
So @jacobheun what I read here is that the SP had an unseal error, canceled the retrieval, but the Lassie side recorded it as success (until it saw the lack of blocks) |
Does that look right to you? |
^^^ Damn my initial hot take looks right! Who knew 6 months ago me. |
Yes, exactly this. |
This is now our next highest transfer error after #120. But it's also new. Discovered last week, validated here with #121 and turned from a silent error
success
into an explicitfailure
coming out of Filclient with application-research/filclient#101. So now we getdata transfer failed: unconfirmed block transfer
in the events database inevent_details>error
.Summary of problem: a data-transfer completes, giving no indication of errors or problems, but the blockstore doesn't have anything new. Graphsync is given the blockstore to store new blocks in and check for the pre-existence of blocks for a given transfer so it doesn't need to double-up. This error is triggered when we finish a data transfer and check the blockstore for the original requested payload CID and it isn't there. So Graphsync isn't receiving it, and it shouldn't be skipping it either.
Debugging such a transfer, we can see that graphsync gets two requests to deal with:
i.e. RequestPaused then RequestCancelled, and no blocks get mentioned or transferred at all for these. There’s no partial, completed, failure, or anything else.
@hannahhoward's initial take is:
For now we've just turned it into an explicit failure on the client side, but we need to understand the causes and figure out if we can decrease the number of these we're encountering.
The text was updated successfully, but these errors were encountered: