diff options
| author | tv <tv@krebsco.de> | 2026-10-27 00:36:40 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-27 00:36:40 +0100 |
| commit | fde8a76ec5d8e697d9b13470cd15ed324bae3d00 (patch) | |
| tree | 6045b4c9fcd5ca2da221668f23e115c88c8e3d97 /src/swarm/source.rs | |
| parent | 7af8f58d46737bb5835aa1625485f22ecf374ebe (diff) | |
talk about "transport" unless mycelium is meant
Diffstat (limited to 'src/swarm/source.rs')
| -rw-r--r-- | src/swarm/source.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/swarm/source.rs b/src/swarm/source.rs index e7f06fb..699b03b 100644 --- a/src/swarm/source.rs +++ b/src/swarm/source.rs @@ -5,9 +5,9 @@ //! document gets the whole document from each of its peers, and a node that is merely //! behind gets the missing changes from each. Automerge can't deduplicate across peers. //! So one suitable peer becomes the source, preferably the closest by round-trip time -//! (a clearly closer one gets a 1 s head start to claim it, else the first to ask); -//! the others wait until the initial sync is done, and then only exchange heads. Messages from waiting -//! peers are still applied; we just don't answer them yet. +//! (a clearly closer one gets a 1 s head start to claim it, else the first to ask); the +//! others wait until the initial sync is done, and then only exchange heads. Messages +//! from waiting peers are still applied; we just don't answer them yet. //! //! A source must be ready and willing to sync with us, as far as we know (its sync //! messages and keepalives say so). It counts as alive while any message from it @@ -20,14 +20,14 @@ //! big answer lost on the way, a stuck sync state) would keep us catching up forever. //! So it is also given up after three of our sync messages in a row went unanswered, //! once nothing from it can still be on the way: no sync message from it for -//! `Timing::delivery_limit`, after which Mycelium has delivered or dropped anything it -//! sent before. It isn't chosen again for another `delivery_limit`, so another peer -//! takes over rather than the same one stalling again; if it is the only candidate, -//! catching up waits that long before trying it again. It also gets a fresh HELLO: a -//! joining node learns of other peers only from HELLO_REPLYs, and the one it got from -//! this peer may have listed none (a peer lists only its neighbours, which a new member -//! isn't until its registration has spread). Meanwhile, every minute without a sync message from it is logged as a -//! warning. +//! `Timing::delivery_limit`, after which the transport has delivered or dropped +//! anything it sent before. It isn't chosen again for another `delivery_limit`, so +//! another peer takes over rather than the same one stalling again; if it is the only +//! candidate, catching up waits that long before trying it again. It also gets a fresh +//! HELLO: a joining node learns of other peers only from HELLO_REPLYs, and the one it +//! got from this peer may have listed none (a peer lists only its neighbours, which a +//! new member isn't until its registration has spread). Meanwhile, every minute without +//! a sync message from it is logged as a warning. use std::sync::atomic::Ordering; use std::time::Duration; |
