aboutsummaryrefslogtreecommitdiffstats
path: root/src/config/mod.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-06 20:22:03 +0100
committertv <tv@krebsco.de>2026-11-06 20:22:03 +0100
commit36a4a54b1c9204d72e405f5bbfa2a1b595ccba04 (patch)
treeebf7c8cf135ebb2684f78a42f2876a0675300624 /src/config/mod.rs
parent5994b49412c058079639585501a78e6458fdbb6f (diff)
flood dissemination
Diffstat (limited to 'src/config/mod.rs')
-rw-r--r--src/config/mod.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index b7c7ff2..25b1c73 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -294,9 +294,9 @@ pub(crate) const OPTIONS: &[OptionSpec] = &[
option(
"dissemination",
Kind::Text,
- "writers-trees|plumtree",
+ "writers-trees|plumtree|flood",
Some("writers-trees"),
- "How a change reaches every member: along writers' trees computed alike on every node from the member list, or by PlumTree (eager links pruned where they deliver twice, grafted where announcements had to bring a change). A genesis node records its own in the document; every node follows what the swarm records, which a protocol writer may change (_continuum/dissemination), and uses its own only where the swarm records none it knows. Default: plumtree with topology hyparview, else writers-trees (docs/topology.md).",
+ "How a change reaches every member: along writers' trees computed alike on every node from the member list, by PlumTree (eager links pruned where they deliver twice, grafted where announcements had to bring a change), or by flooding (every change pushed to every neighbour: the baseline). A genesis node records its own in the document; every node follows what the swarm records, which a protocol writer may change (_continuum/dissemination), and uses its own only where the swarm records none it knows. Default: plumtree with topology hyparview, else writers-trees (docs/topology.md).",
),
option(
"superseded-writes",
@@ -1581,6 +1581,10 @@ fn warn_combinations(settings: &Settings, set: &dyn Fn(&str) -> bool) {
(Topology::Hyparview, Dissemination::WritersTrees) => warn!(
"topology hyparview with dissemination writers-trees: writers' trees need the graph every node shares, which HyParView has none of, so changes pass on by announcements alone, a round and a pull per hop; dissemination plumtree is what goes with it"
),
+ (_, Dissemination::Flood) if settings.neighbours > HYPARVIEW_NEIGHBOURS => warn!(
+ neighbours = settings.neighbours,
+ "dissemination flood: every member pushes every change to each of its neighbours, so each link carries it about twice; a baseline to measure against, costly with this many"
+ ),
(Topology::RingAndPairs, Dissemination::Plumtree) => warn!(
"dissemination plumtree with topology ring-and-pairs: an experiment; writers' trees, on the graph every node shares, were faster in every scenario benchmarked (docs/topology.md)"
),