diff options
| author | tv <tv@krebsco.de> | 2026-11-04 05:14:12 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-04 05:14:12 +0100 |
| commit | 40073ebf9570464a69a928eba9c51b4dad6e699a (patch) | |
| tree | f82fdd38ed24603be5c66740af39a786f213cd1a /docs/peers.md | |
| parent | e8d1cbddcaec18f79f54cad671f15bbaa189673b (diff) | |
announcements answered when lacking
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.
Diffstat (limited to 'docs/peers.md')
| -rw-r--r-- | docs/peers.md | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/docs/peers.md b/docs/peers.md index c2f1ddb..8b58df0 100644 --- a/docs/peers.md +++ b/docs/peers.md @@ -281,8 +281,9 @@ backbone (with 20 stable of 250 members and k = 12: about 65 links per stable me Changes travel through a partial mesh by announcement and pull ([`swarm/relay.rs`](../src/swarm/relay.rs)): a node pushes its own writes to its neighbours; after applying changes from one neighbour it sends its other neighbours a STATUS with its new heads (marked as an announcement: no -keepalive, and answered only by a neighbour whose heads differ, so one that has the -changes already sends nothing back; nor is a neighbour told whose latest heads, as its +keepalive, and answered only by a neighbour that lacks some of those heads, so one that +has the changes already sends nothing back, even if its heads differ, as they do while +writes go on and newer changes are still on their way to it; nor is a neighbour told whose latest heads, as its own announcement or STATUS brought them, are this node's: announcements wait 200 to 400 ms, at random, so of two neighbours with the same news one is usually first, and the other skips it), and a neighbour that lacks those heads pulls them (it sets them as the peer's heads in its sync state, so Automerge asks |
