diff options
Diffstat (limited to 'src/swarm/sync.rs')
| -rw-r--r-- | src/swarm/sync.rs | 8 |
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); } |
