P2P protocol version 2, adding SUCCESS-PLUS and ALREADY-HAVE-PLUS

Client side support for SUCCESS-PLUS and ALREADY-HAVE-PLUS
is complete, when a PUT stores to additional repositories
than the expected on, the location log is updated with the
additional UUIDs that contain the content.

Started implementing PUT fanout to multiple remotes for clusters.
It is untested, and I fear fencepost errors in the relative
offset calculations. And it is missing proxying for the protocol
after DATA.
This commit is contained in:
Joey Hess 2024-06-18 12:07:01 -04:00
parent ca08f3fcc2
commit f18740699e
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
12 changed files with 206 additions and 61 deletions

View file

@ -52,8 +52,6 @@ For June's work on [[design/passthrough_proxy]], implementation plan:
* Tab complete proxied remotes and clusters in eg --from option. (done)
* Basic proxying to special remote support (non-streaming).
* Getting a key from a cluster should proxy from one of the nodes that has
it. (done)
@ -63,7 +61,10 @@ For June's work on [[design/passthrough_proxy]], implementation plan:
other git-annex processes are currently using.
* Implement upload with fanout and reporting back additional UUIDs over P2P
protocol.
protocol. (started, but incomplete)
* On upload to cluster, send to nodes where it's preferred content, and not
to other nodes.
* Implement cluster drops, trying to remove from all nodes, and returning
which UUIDs it was dropped from.
@ -87,6 +88,8 @@ For June's work on [[design/passthrough_proxy]], implementation plan:
And on download from a cluster, if the proxy repository has the content,
get it from there to avoid the overhead of proxying to a node.
* Basic proxying to special remote support (non-streaming).
* Support proxies-of-proxies better, eg foo-bar-baz.
Currently, it does work, but have to run `git-annex updateproxy`
on foo in order for it to notice the bar-baz proxied remote exists,