canmove, Confirmed users
640
edits
| Line 138: | Line 138: | ||
== Open questions/flaws == | == Open questions/flaws == | ||
* How do you prevent garbage-collection races between the server and client? Example: the client doesn't re-upload an item because it thinks the server already has it, but the server has meanwhile decided to | * How do you prevent garbage-collection races between the server and client? Example: the client doesn't re-upload an item because it thinks the server already has it, but the server has meanwhile decided to garbage-collect that item. | ||
garbage-collect that item. | |||
* What's the wire protocol like? | * What's the wire protocol like? | ||
* How can we do this efficiently on the server? | * How can we do this efficiently on the server? | ||
* There are some potential areas where races or partial writes can still occur: | * There are some potential areas where races or partial writes can still occur: | ||
** Meta changes: keys, salts. | |||
** Adding new collections and roots. | |||
** Cross-collection changes. | |||
** We need to consider approaches to these -- maybe don't do cross-collection stuff, use intermediation to allow for swapping out whole storage regions, just as we do with trees, have atomic operations for some meta work? | |||
* Version negotiation. Do collections, trees, objects need to be versioned, or do we plan to do full reuploads? Can we support multiple versions at the same time to speed up re-syncing for new devices? | * Version negotiation. Do collections, trees, objects need to be versioned, or do we plan to do full reuploads? Can we support multiple versions at the same time to speed up re-syncing for new devices? | ||