diff options
| author | tv <tv@krebsco.de> | 2026-10-24 20:28:36 +0200 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-24 20:28:36 +0200 |
| commit | 59c1511bcacedddc354e82033d523f459c6db5d4 (patch) | |
| tree | fae84e91e1c7f4a98b2e99c79602ace059c6e211 /src/api | |
| parent | 8e8aee67ef8dfa7c30a3734a4b6f5357c87f1a67 (diff) | |
cache heads
To reduce the number of write locks, heads are now cached.
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/peers.rs | 2 | ||||
| -rw-r--r-- | src/api/stats.rs | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/api/peers.rs b/src/api/peers.rs index 7caaaf3..919f187 100644 --- a/src/api/peers.rs +++ b/src/api/peers.rs @@ -182,7 +182,7 @@ pub(crate) async fn list_peers( } peers.sort_by(|a, b| a.public_key.cmp(&b.public_key)); - let local_heads = state.doc.write().await.doc.get_heads().len(); + let local_heads = state.doc.read().await.heads().len(); Ok(Json(PeerListResponse { local_alias: state.alias.clone(), local_epoch: local_epoch.into(), diff --git a/src/api/stats.rs b/src/api/stats.rs index bc925ff..838cc0f 100644 --- a/src/api/stats.rs +++ b/src/api/stats.rs @@ -134,8 +134,8 @@ async fn collect(state: &AppState) -> StatsResponse { let node = state.stats.snapshot(); let (heads, tier) = { - let mut replica = state.doc.write().await; - let heads = replica.doc.get_heads().len(); + let replica = state.doc.read().await; + let heads = replica.heads().len(); (heads, members::tier(&replica.doc, state.local_id())) }; let saved = state.stats.saved_size(); |
