aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs1
-rw-r--r--src/node.rs4
-rw-r--r--src/simtest/bench.rs18
-rw-r--r--src/simtest/mod.rs1
-rw-r--r--src/state/mod.rs4
-rw-r--r--src/swarm/sync.rs9
-rw-r--r--src/transport/mod.rs8
7 files changed, 10 insertions, 35 deletions
diff --git a/src/main.rs b/src/main.rs
index 8c52879..128e5a0 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -219,7 +219,6 @@ async fn main() -> Result<()> {
timing: state::Timing::new(args.keepalive, sync_reply_timeout, delivery_limit)
.with_probe_max(args.dormant_probe_max),
neighbours_k: args.neighbours,
- push_changes: false,
alias: args.alias.clone(),
dashboard_url: args.dashboard_url.clone(),
electorate_window: args.electorate_window,
diff --git a/src/node.rs b/src/node.rs
index 155ed85..5bfce31 100644
--- a/src/node.rs
+++ b/src/node.rs
@@ -44,9 +44,6 @@ pub(crate) struct NodeConfig {
/// limit)`.
pub(crate) timing: Timing,
pub(crate) neighbours_k: usize,
- /// Changes along writers' trees as they are, not in sync messages
- /// (`AppState::push_changes`).
- pub(crate) push_changes: bool,
pub(crate) alias: Option<String>,
/// `--dashboard-url`.
pub(crate) dashboard_url: Option<String>,
@@ -122,7 +119,6 @@ impl Node {
run_id: uuid::Uuid::new_v4().into_bytes(),
handshakes: Default::default(),
neighbours_k: config.neighbours_k,
- push_changes: config.push_changes,
alias: config.alias,
dashboard_url: config.dashboard_url,
electorate_window: config.electorate_window,
diff --git a/src/simtest/bench.rs b/src/simtest/bench.rs
index 91b0aa7..19603d2 100644
--- a/src/simtest/bench.rs
+++ b/src/simtest/bench.rs
@@ -40,13 +40,6 @@ const ONLY: &str = "BENCH_SCENARIO";
/// cores, but they share them, so delays (and what depends on timing) may come out
/// higher than alone; message counts barely.
const PARALLEL: &str = "BENCH_PARALLEL";
-/// If `1`, changes along writers' trees go as they are, not in Automerge sync messages
-/// (`AppState::push_changes`): `BENCH_PUSH=1`, to measure against.
-const PUSH: &str = "BENCH_PUSH";
-
-fn pushing() -> bool {
- std::env::var(PUSH).is_ok_and(|value| value == "1")
-}
const SETTLE: Duration = Duration::from_secs(180);
/// How the swarm is made.
@@ -439,12 +432,10 @@ async fn run(seed: u64, scenario: &'static Scenario) -> String {
let ids: Vec<String> = (0..scenario.nodes).map(|i| format!("n{i:03}")).collect();
(scenario.net)(&sim, &ids);
let reply_timeout = scenario.reply_timeout.unwrap_or(SYNC_REPLY_TIMEOUT);
- let push = pushing();
let timing = move |config: &mut crate::node::NodeConfig| {
config.timing = Timing::new(KEEPALIVE, reply_timeout, DELIVERY_LIMIT);
// As in production (`--neighbours`).
config.neighbours_k = 12;
- config.push_changes = push;
};
let mut nodes = vec![sim.start_on_with(&ids[0], (scenario.on)(0), &[], Start::Genesis, timing)];
// Those there from the start; the others join during the workloads.
@@ -495,15 +486,10 @@ async fn run(seed: u64, scenario: &'static Scenario) -> String {
let _ = writeln!(
out,
- "\n{} ({} writes at {} a second each{})",
+ "\n{} ({} writes at {} a second each)",
scenario.name,
WRITES,
- 1000 / WRITE_EVERY.as_millis(),
- if pushing() {
- "; changes pushed along trees"
- } else {
- ""
- }
+ 1000 / WRITE_EVERY.as_millis()
);
let mut joined = initial;
for (w, (workload, writer)) in [
diff --git a/src/simtest/mod.rs b/src/simtest/mod.rs
index 26e85c7..e9d8c15 100644
--- a/src/simtest/mod.rs
+++ b/src/simtest/mod.rs
@@ -187,7 +187,6 @@ impl Sim {
earlier_actors: Vec::new(),
timing: Timing::new(KEEPALIVE, SYNC_REPLY_TIMEOUT, DELIVERY_LIMIT),
neighbours_k: 8,
- push_changes: false,
alias: Some(id.to_owned()),
dashboard_url: None,
electorate_window: Duration::from_secs(30 * 24 * 3600),
diff --git a/src/state/mod.rs b/src/state/mod.rs
index f9479a1..e127877 100644
--- a/src/state/mod.rs
+++ b/src/state/mod.rs
@@ -105,10 +105,6 @@ pub(crate) struct AppState {
/// Target number of neighbours (`--neighbours`); up to this many + 1 members the
/// swarm is a full mesh.
pub(crate) neighbours_k: usize,
- /// Changes passed on along writers' trees go as they are (`SyncBody::Changes`), not
- /// in Automerge sync messages: an experiment, measured against those
- /// (`simtest::bench`, `BENCH_PUSH`), off otherwise.
- pub(crate) push_changes: bool,
/// Our alias (`--alias`), published in the member list (`swarm::members`).
pub(crate) alias: Option<String>,
/// Where people reach our dashboard (`--dashboard-url`), published in the member list
diff --git a/src/swarm/sync.rs b/src/swarm/sync.rs
index aea6a0b..e551cb8 100644
--- a/src/swarm/sync.rs
+++ b/src/swarm/sync.rs
@@ -138,7 +138,6 @@ async fn deliver_sync_to_peer(state: &AppState, peer: &str) -> Result<()> {
.map(|estimate| estimate.bytes_per_sec);
let failed = peer_state_mutex.lock().await.failed_whole(Instant::now());
let delta_threshold = state.blobs.delta_threshold_for(rate, failed);
- let push_changes = state.push_changes;
let stats = Arc::clone(&state.stats);
let clock = Arc::clone(&state.clock);
@@ -168,10 +167,10 @@ async fn deliver_sync_to_peer(state: &AppState, peer: &str) -> Result<()> {
delta_threshold,
Instant::now(),
);
- // Along a tree, taken as delivered: the changes as they are, if pushing
- // (`AppState::push_changes`). Only those too small to deflate: larger
- // ones go as a message, deflated (`compress`).
- let pushed = (push_changes && level && writer.is_some() && again.is_none())
+ // Along a tree, taken as delivered: the changes as they are
+ // (`SyncSession::push`). Only those too small to deflate: larger ones go
+ // as a message, deflated (`compress`).
+ let pushed = (level && writer.is_some() && again.is_none())
.then(|| {
peer_state.sync.push(
&replica.doc,
diff --git a/src/transport/mod.rs b/src/transport/mod.rs
index 2595257..85f69f5 100644
--- a/src/transport/mod.rs
+++ b/src/transport/mod.rs
@@ -744,10 +744,10 @@ pub(crate) enum SyncBody {
/// An Automerge sync message, deflated (`compress`): a large one, which shrank.
Deflated(#[serde(with = "crate::transport::wire::codec::sync_message")] SyncPayload),
/// Changes passed on along a writer's tree as they are, with the sender's heads,
- /// instead of an Automerge sync message (`AppState::push_changes`): where the sender
- /// takes the message as delivered, it has everything the receiver has, and needs
- /// none of the rest of one (`SyncSession::push`). No heads stand for the tips of
- /// the changes, as the sender's heads mostly are.
+ /// instead of an Automerge sync message: where the sender takes the message as
+ /// delivered, the receiver rebuilds the rest of one (`SyncSession::push`,
+ /// `Received::pushed`). No heads stand for the tips of the changes, as the sender's
+ /// heads mostly are.
Changes {
#[serde(with = "crate::transport::wire::codec::change_hashes")]
heads: Vec<ChangeHash>,