aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/peer
Commit message (Collapse)AuthorAgeFilesLines
* swarm: no SIGNATUREStv3 days1-10/+0
| | | | | | | | | | | | | | Signatures sent on their own (SIGNATURES, every second, to each peer not sent them yet) flooded every link: a signature made after its change left, or one that came with changes, went to every neighbour, whether or not it got the change along with its signature elsewhere. With every change of a node signed as it leaves (1217) and signatures going where their changes go (1218), none is left for them to carry: the message, its task and its traffic counter go (wire version 46). Signatures waiting for their changes are offered as before when sync messages bring them, and the changes waiting for signatures judged again with the next batch.
* roots: an epoch's root pinned, and named in every handshaketv3 days2-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Review 2, N7, the care it raised: a joining node's empty document took as the first epoch's root whatever dependency-less change came first, from whichever peer it joined through; the first epoch's ID is all zeros, so nothing pinned it. A remake's epoch has its ID, the snapshot change's hash, which the rules hold its root to. * Every node names its epoch's root in HELLO and HELLO_REPLY (the epoch's ID for a remake's, its genesis change for the first; wire version 45). A node whose document starts from another root of the same epoch refuses the handshake, logging it: another history under the swarm's ID, a forged root or a genesis started again. * A joining node with an empty document takes as its root only the one it was given (--genesis-root, new), else the one its peers name, and none while they name different ones (access::screen::RootPin, kept in Screening across documents): one peer hands it another root only if it is all the joiner hears, or never, with --genesis-root. A root refused is listed with the refused, what builds on it with it. * The genesis node logs the root (`The swarm's root`); GET /admin/epochs shows it (`root`). A genesis started again under a remembered swarm ID used to merge with the nodes of it still running; they now refuse it (another root), and the docs say to join them with seeds instead. The epoch's identity stays as it is (generation 0 all zeros): records and epoch metadata name it so, and every comparison of epochs with them.
* swarm: changes taken unjudged, dropped (REFUSALS)tv4 days1-0/+10
| | | | | | | | | A node refusing changes a peer brought tells it which broke a rule; the peer judges them itself, and if its rules refuse them too, drops them with all built on them (its document forked without them, a fresh actor), quarantining its own writes among them. Wire version 42. Auth plan M6 (rejoin on taint).
* access: banstv4 days1-0/+20
| | | | | | | | _continuum/banned/<node ID>: every node refuses the banned node's changes from then on (judged as the ban stood) and leaves its handshakes unanswered. Auth plan M6.
* signatures: on their own (SIGNATURES)tv4 days1-0/+10
| | | | | | | Signatures no sync message took go on their own within a second, to each peer not sent them yet (wire version bumped). Auth plan M5.
* dashboard: without LINKS; LINKS removedtv4 days1-6/+0
| | | | | | | | | The dashboard reads every member's links from the members themselves; LINKS and LINKS_REPLY, swarm::links and their wire tags go (wire version bumped). Nodes the browser can't reach are drawn from what the reachable ones measure. Auth plan M3.
* store: keys_at tells no map from an empty onetv4 days1-1/+4
| | | | | | | | registry::exists counted any value at _continuum/users as a registry; keys_at answers None where there is no map, and its users (records, members, forget records, remakes) say what they make of it. Auth plan M1 (fix).
* HyParView (slim)tv5 days1-2/+7
|
* plumtreetv5 days1-0/+12
|
* indirect probestv5 days1-0/+6
|
* unlisted members forgottontv5 days1-6/+12
|
* handshakes countedtv5 days1-0/+7
|
* working links recordedtv5 days1-0/+1
|
* heads heard in announcementstv5 days2-3/+5
|
* heads heard in repliestv5 days2-1/+4
|
* heads heard forget senttv5 days2-1/+31
|
* worker sends off the passtv5 days1-14/+43
|
* suspend detectedtv5 days1-0/+4
|
* rtt table prunedtv5 days1-0/+1
|
* one grace wait per peertv5 days1-1/+3
|
* reach sets boundedtv5 days1-5/+11
|
* strangers messages smalltv5 days1-0/+4
|
* lanes commenttv6 days1-2/+5
|
* round trips in treestv6 days1-1/+8
|
* suspect pathstv6 days1-0/+5
|
* deflate blob chunkstv6 days1-1/+2
|
* epoch tag in synctv6 days1-3/+21
|
* time blob messagestv7 days1-0/+19
|
* slow round back offtv7 days1-0/+5
|
* hello again when heard fromtv7 days2-2/+19
| | | | | | While we wait for a peer's HELLO_REPLY, anything else that comes from it makes our HELLO go again at once, at most once a second, instead of when the backoff says.
* unanswered pull frees the slottv7 days1-0/+1
| | | | | | When the answer to a pull is overdue (the sync reply timeout: 1 s in the simtests, 10 s in production), the pull gives up the slot, and the next waiting neighbour is pulled at once.
* overdue sync asked after from thentv7 days1-3/+3
|
* pull after gracetv7 days1-1/+1
| | | | | | | | Before pulling, a node waits one measured round trip to the announcer (1 s at most) and pulls only what is still missing. If the round trip isn't known yet, it pulls at once, as now. On the clean benchmark links the round trip is a few milliseconds, so those scenarios shouldn't change.
* announcements answered when lackingtv7 days2-5/+23
| | | | | | | A neighbour now answers an announcement only if it lacks some of the announced heads. Heads that merely differ are no longer enough, since they do while writes go on. The check reads the document, so it runs off the message consumer, as the pull check already does.
* unanswered members not reachedtv8 days1-7/+18
|
* replace eager links by treestv8 days1-8/+3
|
* measure 2-hop neighbourhoodtv8 days2-3/+11
|
* introduce eager linkstv9 days1-3/+8
|
* skip neighbours with our headstv9 days1-0/+1
|
* announcements answered only if heads differtv9 days3-2/+24
|
* retry new peers before probingtv9 days1-1/+1
|
* probe list memberstv9 days2-6/+7
|
* add per-node traffic countstv9 days1-1/+9
|
* probe when reachabletv10 days2-1/+26
|
* probe wakes peer workertv10 days1-2/+3
|
* peer worker forget records on changetv10 days3-3/+17
|
* peer worker sleeps until deadline, not fixed timetv10 days4-14/+80
|
* state: drop epoch_txtv10 days1-1/+2
| | | | The stamp is the only lock-free epoch label.
* rename AutoMerge to Documenttv11 days1-2/+2
|
* add peer clock skew warningtv11 days1-0/+1
|