diff options
| author | tv <tv@krebsco.de> | 2026-11-06 16:47:32 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-06 16:47:32 +0100 |
| commit | ab8f5447680da56ce658abbc33c222219c3204ef (patch) | |
| tree | 93ed572d120cf29b7e440c31194bafd021e8a5a6 /src/swarm/tree.rs | |
| parent | 7c0f90b327ad567c4e5e6a96cda433d774182dac (diff) | |
plumtree
Diffstat (limited to 'src/swarm/tree.rs')
| -rw-r--r-- | src/swarm/tree.rs | 46 |
1 files changed, 2 insertions, 44 deletions
diff --git a/src/swarm/tree.rs b/src/swarm/tree.rs index de865de..db3e920 100644 --- a/src/swarm/tree.rs +++ b/src/swarm/tree.rs @@ -30,8 +30,6 @@ use std::collections::{BTreeMap, BTreeSet, HashMap, VecDeque}; use std::sync::Arc; -use tracing::trace; - use crate::locks::MutexExt; use crate::state::AppState; use crate::swarm::{reach, rtt, topology}; @@ -663,48 +661,8 @@ pub(crate) async fn forward( from: &str, changes: &[crate::document::ChangeHash], ) -> Option<Plan> { - let mut plan = plan(state, writer).await?; - if !changes.is_empty() { - for neighbour in &plan.covered { - if let Some(peer_state) = state.get_peer_state(neighbour).await { - peer_state - .lock() - .await - .sync - .known_to_peer(changes, tokio::time::Instant::now()); - } - } - } - plan.children.retain(|child| child != from); - let children = &plan.children; - let replica = if changes.is_empty() { - None - } else { - Some(state.doc.read().await) - }; - for child in children { - if let Some(peer_state) = state.get_peer_state(child).await { - let mut peer_state = peer_state.lock().await; - peer_state.tree_writer = Some(writer); - if let Some(replica) = &replica { - peer_state.sync.with_predecessors( - &replica.doc, - changes, - tokio::time::Instant::now(), - ); - } - } - state.stats.tree_forward(); - state.request_sync(child); - } - if !children.is_empty() { - trace!( - writer, - children = children.len(), - "Passing a change on along the writer's tree" - ); - } - Some(plan) + let plan = plan(state, writer).await?; + Some(crate::swarm::dissemination::pass_on(state, writer, from, changes, plan).await) } /// Writers' trees as the way changes reach every member |
