mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-20 21:43:09 +00:00
77 lines
2.5 KiB
Plaintext
77 lines
2.5 KiB
Plaintext
|
|
['*' means complete]
|
|
|
|
Connection Management: Brian
|
|
*v1: foolscap, no relay, live == connected-to-queen, broadcast updates, full mesh
|
|
v2: live != connected-to-queen, connect on demand
|
|
v3: relay?
|
|
|
|
File Encoding: Brian
|
|
*v1: single-segment, no merkle trees
|
|
v2: multiple-segment (LFE)
|
|
v3: merkle tree to verify each share
|
|
v4: merkle tree to verify each segment
|
|
|
|
Share Encoding: Zooko
|
|
*v1: fake it (replication)
|
|
*v2: PyRS
|
|
v3: C-based Reed-Solomon
|
|
|
|
Peer selection:
|
|
*v1: permuted peer list, consistent hash
|
|
v2: reliability/goodness-point counting?
|
|
v3: denver airport (chord)?
|
|
|
|
filetable maintenance:
|
|
*v1: queen-based tree of MutableDirectoryNodes, persisted to queen's disk
|
|
no accounts
|
|
v2: move tree to client side, serialize to a file, upload,
|
|
queen.set_filetable_uri (still no accounts, just one global tree)
|
|
v3: break world up into accounts, separate mutable spaces. Maybe
|
|
implement SSKs
|
|
v4: filetree
|
|
|
|
checker/repairer:
|
|
*v1: none
|
|
v2: centralized checker, repair agent
|
|
v3: nodes also check their own files
|
|
|
|
storage: RobK
|
|
*v1: no deletion, one directory per verifierid, one owner per share,
|
|
leases never expire
|
|
v2: multiple shares per verifierid [zooko]
|
|
v2.5: deletion
|
|
v2: leases expire, delete expired data on demand, multiple owners per share
|
|
|
|
UI: (brian)
|
|
webish? webfront? PB + CLI tool? FUSE?
|
|
*v1: readonly webish (nevow, URLs are filepaths)
|
|
*v2: read/write webish, mkdir, del (files)
|
|
v2.5: del (directories)
|
|
v3: PB+CLI tool
|
|
v4: FUSE
|
|
|
|
back pocket ideas:
|
|
when nodes are unable to reach storage servers, make a note of it, inform
|
|
queen eventually. queen then puts server under observation or otherwise
|
|
looks for differences between their self-reported availability and the
|
|
experiences of others
|
|
|
|
store filetable URI in the first 10 peers that appear after your own nodeid
|
|
each entry has a sequence number, maybe a timestamp
|
|
on recovery, find the newest
|
|
|
|
multiple categories of leases:
|
|
committed leases -- we will not delete these in any case, but will instead tell an uploader that we are full
|
|
active leases
|
|
in-progress leases (partially filled, not closed, pb connection is currently open)
|
|
uncommitted leases -- we will delete these in order to make room for new lease requests
|
|
interrupted leases (partially filled, not closed, pb connection is currently not open, but they might come back)
|
|
expired leases
|
|
(I'm not sure about the precedence of these last two. Probably deleting expired leases instead of deleting interrupted leases would be okay.)
|
|
|
|
big questions:
|
|
convergence?
|
|
peer list maintenance: lots of entries
|
|
|