[tahoe-lafs-trac-stream] [tahoe-lafs] #510: use plain HTTP for storage server protocol
tahoe-lafs
trac at tahoe-lafs.org
Sun Oct 27 01:30:00 UTC 2013
#510: use plain HTTP for storage server protocol
------------------------------+---------------------------------
Reporter: warner | Owner: zooko
Type: enhancement | Status: new
Priority: major | Milestone: 2.0.0
Component: code-storage | Version: 1.2.0
Resolution: | Keywords: standards gsoc http
Launchpad Bug: |
------------------------------+---------------------------------
Comment (by simeon):
== Not uploading if the content exists ==
The upload should of course be done in a way that benefits from the
hashsum id. The client should be clever and check if it needs to upload by
calculating the hashsum and doing a GET headers first on that blob.
When an insufficiently clever client (eg a non-js browser) does upload a
dup, the server figures that out and re-uses the existing object,
discarding the new one, but using whatever filename the client wants to
make a new link if needed.
So ... the other thing needed is a way for the client to make a new link,
without providing the actual content. Looks to me like in HTTP this has to
be done via a GET perhaps to a specific query URI, or since it's a cheap
operation, perhaps just make new names any time a user tries to GET
something if they provide a hashsum and a filename?
As alluded to earlier, filename doesn't really actually have to exist on
the server at all for the cache files, the value could be filled from the
request header. But storing these on-disk on the server allows searching
(until users clutter it up too much with rubbish names, so how useful this
is depends on the user context).
Certainly the user wants to create links in their homedir. One solution is
that the client is what handles those, rather than them being symlinks or
whatever that the server can read. The client could use some kind of
syntax like in the metadata files proposed earlier, to say, this object
should be resolved by looking up this hashsum id. Then the user is just
creating or overwriting a small plaintext metadata using a POST.
The same mechanism could be used for in-cache objects filenames, but I
think the extra network requests to resolve links at the client end makes
it an unattractive choice.
OK, now I think that's everything! ;-) ciao
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/510#comment:34>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list