Skip to content

rfc: dynamic routing candidates - #15

Open
alanshaw wants to merge 2 commits into
mainfrom
ash/rfc/dynamic-affinity-routing
Open

rfc: dynamic routing candidates#15
alanshaw wants to merge 2 commits into
mainfrom
ash/rfc/dynamic-affinity-routing

Conversation

@alanshaw

@alanshaw alanshaw commented Jul 23, 2026

Copy link
Copy Markdown
Member

馃摉 Preview

Summary

Proposal for an alternative to the presupposed "static" affinity routing where ALL writes to a given space are routed to a specific storage node.

@alanshaw
alanshaw requested a review from a team July 23, 2026 11:47

@bajtos bajtos left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copilot AI added a commit to fil-forge/libforge that referenced this pull request Aug 1, 2026
Per RFC fil-one/RFC#15 (dynamic affinity routing), adds an optional
`affinity` field to `AddArguments` that accepts a list of storage-node
DIDs. When present, it constrains routing to the specified nodes.
Regenerates cbor_gen.go and json_gen.go accordingly.
@parkan

parkan commented Aug 4, 2026

Copy link
Copy Markdown

I am generally in favor of minimizing central state tracking as much as possible but I'm a bit anxious that this could lead to e.g. dropping multiparts on the floor without an easy way for anyone to find them after clients think everything is ACK'd = pushes dealing with that to Ingot/Guppy actual S3 client impls? if that's acceptable 馃憤 but I feel like it doesn't quite match S3 semantics

(ref #3 Async-ACK under https://github.com/fil-one/RFC/blob/main/rfcs/2026-05-filone-forge-deployment-proposal.md#the-upload-path)

@alanshaw

alanshaw commented Aug 6, 2026

Copy link
Copy Markdown
Member Author

I'm a bit anxious that this could lead to e.g. dropping multiparts on the floor without an easy way for anyone to find them after clients think everything is ACK'd = pushes dealing with that to Ingot/Guppy actual S3 client impls?

I'm not sure I follow...

@alanshaw alanshaw changed the title rfc: dynamic affinity routing rfc: dynamic routing candidates Aug 6, 2026
@parkan

parkan commented Aug 6, 2026

Copy link
Copy Markdown

I'm a bit anxious that this could lead to e.g. dropping multiparts on the floor without an easy way for anyone to find them after clients think everything is ACK'd = pushes dealing with that to Ingot/Guppy actual S3 client impls?

I'm not sure I follow...

consider this situation:

  • client does a multi-part upload with dynamic affinity, ACK'd at S3 boundary
  • node crashes/restarts partway through processing the multipart pieces (i.e. before accept on all chunks)
  • if the client (or something) doesn't keep add task state until everything is actually accepted not just ACK'd -> dangling blob(s) that needs reconciliation and doesn't have a receipt that links it to a provider
  • also what happens if the affinity set changes upon retry?

I might be misunderstanding the receipt retention design? (but the way I'm reading it another problem is that all receipts need to be retained for entire blob lifecycle as the only authoritative source of truth, otherwise removes would break -- the receipt chain + indexer design also triggering some IPNI PTSD but that's neither here nor there)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants