-
Notifications
You must be signed in to change notification settings - Fork 42
feat(pdp): add SP-to-SP piece pull endpoint #864
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
Conversation
7f3a6f5 to
89c16b0
Compare
89c16b0 to
546549f
Compare
LexLuthr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Just need to change the ParkPiece strategy.
|
This PR is a concern as we have SPs with huge databases, and Support is looking for ways to reduce Curio's db impact (ex: #854 ). Streaming behavior must be debugged using logs, not databases. |
|
@rvagg Can we have the spec for this ticket? |
|
@snadrus sorry I should have linked to #828 as the issue behind this ticket. There's also a longer document that the description there came out of but I think that'd be noise at this stage. The godoc I put in the handler can/should also be treated as a spec with the desired client flow. I hear you re database size, but we have a clean-up task in here that keeps it minimal, that could be tightened much further than it is now - currently to 5 days, to retain data for debugging purposes, but it could even be as small as an hour if we want. The problems with not storing state for this is:
We could just rely on The trade-off would be: less granularity, separate status API(s), more complex queries against |
e2287ba to
f0cf233
Compare
|
@LexLuthr in a new Created a separate The task runs up to 4 concurrent downloads, each isolated so a slow/bad source doesn't block others. Has a 1 hour total fetch timeout (these are capped at 1016 MiB total) and exponential backoff on retries (5 max). Still room for verified streaming retrieval in future but I hope this should be solid enough for a starter? |
f0cf233 to
109980e
Compare
b82abc6 to
5c3972e
Compare
|
Curio: what are the next steps for getting this approved/merged? I want to make sure we're clear about what things need to get done now or can be improved later, particularly with the merge back to Context: this is the last remaining feature needed for FOC GA (as part of FilOzone/filecoin-services#357 )). There are still plenty of operational/tooling items though for FOC GA, but getting the GA durability story landed is key for us to turn focus towards bug fixing / operational improvement mode because we know more APIs won't be added to Synapse. How do we get decisions here as quickly as person? I suggest we have a verbal sync (I can work on scheduling). Even if we end up deciding that more immediate work is required, I want to take days getting to that decision with async back and forth. |
5c3972e to
87dab18
Compare
39a74a2 to
aa2b089
Compare
|
Renamed everything in here from "Fetch" to "Pull". During SDK integration I found it too hard to distinguish it from |
b5da59c to
f7e7250
Compare
|
@rjan90 we're going to get this landed before you cut a tag this week, keeping it open while I'm still testing on it in case something comes up, but it's ready as is, works, tested, just not heavily exercised. |
f7e7250 to
b89ad67
Compare
Discussed in sync today to merge this, so that we can cut a tag and get it shipped out to PDP SPs. |
Implement POST /pdp/piece/pull for fetching pieces from other SPs. Background task handles download, CommP verification, and retry with failure tracking. Consolidates PieceCID parsing into shared utilities. Closes: #828
06a71ef to
262a95b
Compare
Implement POST /pdp/piece/fetch for fetching pieces from other SPs. Includes idempotent request handling, failure tracking with retry status, and CommP verification for external sources.
New files:
Changes:
Pulls in lib/ffi/piece_funcs.go from main branch as is.