From 490234bbd44356da1cca0ad62b044e0cba70a226 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 24 Oct 2026 06:09:22 +0200 Subject: add swarm stats --- src/swarm/sync.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/swarm/sync.rs') diff --git a/src/swarm/sync.rs b/src/swarm/sync.rs index 383cdaf..adf8146 100644 --- a/src/swarm/sync.rs +++ b/src/swarm/sync.rs @@ -305,6 +305,7 @@ pub(crate) async fn handle_sync( let applied = { let doc = Arc::clone(&state.doc); let peer_state_mutex = Arc::clone(&peer_state_mutex); + let stats = Arc::clone(&state.stats); let check_caught_up = !state.initial_sync_done.load(Ordering::Acquire); let epoch = envelope.epoch; let message = envelope.message; @@ -334,7 +335,9 @@ pub(crate) async fn handle_sync( peer_state.sync.reply_settled(); resend_if_needed(&peer, &mut peer_state.sync.state); - let changed = replica.doc.get_heads() != heads_before; + let heads_after = replica.doc.get_heads(); + stats.heads_seen(heads_after.len()); + let changed = heads_after != heads_before; Ok(Some(( // Only from a ready peer: a peer still catching up has empty heads, which @@ -367,6 +370,9 @@ pub(crate) async fn handle_sync( if caught_up && !state.initial_sync_done.swap(true, Ordering::AcqRel) { info!(peer = %peer, "Initial sync complete"); + state + .stats + .caught_up(state.traffic.total().received.sync.bytes); source::finished(state, peer); } -- cgit v1.3.1