summaryrefslogtreecommitdiffstats
path: root/src/swarm/sync.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-24 06:09:22 +0200
committertv <tv@krebsco.de>2026-10-24 06:09:22 +0200
commit490234bbd44356da1cca0ad62b044e0cba70a226 (patch)
tree74c1b840a125bc9317602c63e29cbf8f81853b3d /src/swarm/sync.rs
parente0ab17f665bb476329e0c7f980f31bb10cbfc944 (diff)
add swarm stats
Diffstat (limited to 'src/swarm/sync.rs')
-rw-r--r--src/swarm/sync.rs8
1 files changed, 7 insertions, 1 deletions
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);
}