From 2f3d191a12b6e03ef1845c202d15c7b90736558c Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 26 Oct 2026 04:24:52 +0100 Subject: unify peers snapshot logic --- src/api/peers.rs | 13 ++----------- src/api/stats/prometheus.rs | 8 +------- 2 files changed, 3 insertions(+), 18 deletions(-) (limited to 'src/api') diff --git a/src/api/peers.rs b/src/api/peers.rs index fac3440..c7b3c50 100644 --- a/src/api/peers.rs +++ b/src/api/peers.rs @@ -1,14 +1,11 @@ //! /peers handlers. -use std::sync::Arc; - use axum::{ Json, extract::{Path, Query, State}, http::StatusCode, }; use serde::{Deserialize, Serialize}; -use tokio::sync::Mutex; use tokio::time::Instant; use tracing::warn; use utoipa::ToSchema; @@ -17,7 +14,7 @@ use super::store_status; use crate::document::replica::Epoch; use crate::document::store; use crate::locks::MutexExt; -use crate::state::{AppState, HelloState, Incidents, Liveness, PeerState}; +use crate::state::{AppState, HelloState, Incidents, Liveness}; use crate::swarm::peer::forgotten_path; use crate::transport::traffic::PeerTraffic; @@ -120,13 +117,7 @@ pub(crate) struct DeletePeerQuery { pub(crate) async fn list_peers( State(state): State, ) -> Result, StatusCode> { - let snapshot: Vec<(String, Arc>)> = state - .peer_states - .read() - .await - .iter() - .map(|(pk, m)| (pk.clone(), Arc::clone(m))) - .collect(); + let snapshot = state.peers_snapshot().await; let now = Instant::now(); let local_epoch = state.local_epoch(); diff --git a/src/api/stats/prometheus.rs b/src/api/stats/prometheus.rs index 07a6cc8..3709ea4 100644 --- a/src/api/stats/prometheus.rs +++ b/src/api/stats/prometheus.rs @@ -120,13 +120,7 @@ struct Peer { async fn peers(state: &AppState) -> Vec { let now = Instant::now(); - let snapshot: Vec<_> = state - .peer_states - .read() - .await - .iter() - .map(|(key, peer_state)| (key.clone(), peer_state.clone())) - .collect(); + let snapshot = state.peers_snapshot().await; let mut aliases = crate::swarm::members::aliases(&state.doc.read().await.doc); let mut peers = Vec::with_capacity(snapshot.len()); for (key, peer_state) in snapshot { -- cgit v1.3.1