summaryrefslogtreecommitdiffstats
path: root/src/api/stats.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/stats.rs')
-rw-r--r--src/api/stats.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/api/stats.rs b/src/api/stats.rs
index fa64600..07521ab 100644
--- a/src/api/stats.rs
+++ b/src/api/stats.rs
@@ -16,6 +16,7 @@ use serde::Serialize;
use super::peers::EpochInfo;
use crate::state::{AppState, Incidents};
use crate::swarm::{members, stability, topology};
+use crate::transport::stats::TransportStats;
use crate::transport::traffic::PeerTraffic;
#[derive(Debug, Serialize)]
@@ -44,6 +45,8 @@ pub(crate) struct StatsResponse {
propagation: PropagationStats,
/// This node's own files (`files`), by kind.
disk: BTreeMap<&'static str, DiskStats>,
+ /// How the transports find and reach peers (`Transport::stats`).
+ transports: TransportStats,
}
/// Reads and writes of one kind of file, since the node started.
@@ -93,6 +96,9 @@ struct DocumentStats {
saved_bytes_secs_ago: Option<u64>,
/// How long the last measurement took (copy and save), in milliseconds.
saved_bytes_took_ms: Option<u64>,
+ /// How long takers of the document's lock waited for it, since start: the node's
+ /// work on the one document queues there.
+ lock_wait: crate::document::lock::LockWaits,
}
#[derive(Debug, Serialize)]
@@ -242,6 +248,7 @@ async fn collect(state: &AppState) -> StatsResponse {
saved_bytes: saved.map(|s| s.bytes),
saved_bytes_secs_ago: saved.map(|s| s.at.elapsed().as_secs()),
saved_bytes_took_ms: saved.map(|s| s.took.as_millis() as u64),
+ lock_wait: state.doc.waits(),
},
catch_up: CatchUpStats {
sources: node.catch_up_sources,
@@ -316,5 +323,6 @@ async fn collect(state: &AppState) -> StatsResponse {
(kind.as_str(), stats)
})
.collect(),
+ transports: state.transport.stats(),
}
}