From fc5517b6bed0f817705daba6ed7e1d77f8785d21 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 24 Jun 2022 09:28:52 +0200 Subject: [PATCH] Gather metrics only when `/metrics` endpoint is retrieved --- crates/collab/src/rpc.rs | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index 7e16d57c4cf78d29b6ea9c3ad7f04d5c8607902d..79c1e53a0b5f906cb961dc73a2348d1866d7fcd2 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -1682,21 +1682,6 @@ impl<'a> Drop for StoreWriteGuard<'a> { fn drop(&mut self) { #[cfg(test)] self.check_invariants(); - - let metrics = self.metrics(); - - METRIC_CONNECTIONS.set(metrics.connections as _); - METRIC_REGISTERED_PROJECTS.set(metrics.registered_projects as _); - METRIC_ACTIVE_PROJECTS.set(metrics.active_projects as _); - METRIC_SHARED_PROJECTS.set(metrics.shared_projects as _); - - tracing::info!( - connections = metrics.connections, - registered_projects = metrics.registered_projects, - active_projects = metrics.active_projects, - shared_projects = metrics.shared_projects, - "metrics" - ); } } @@ -1802,7 +1787,11 @@ pub async fn handle_websocket_request( pub async fn handle_metrics(Extension(server): Extension>) -> axum::response::Response { // We call `store_mut` here for its side effects of updating metrics. - server.store_mut().await; + let metrics = server.store().await.metrics(); + METRIC_CONNECTIONS.set(metrics.connections as _); + METRIC_REGISTERED_PROJECTS.set(metrics.registered_projects as _); + METRIC_ACTIVE_PROJECTS.set(metrics.active_projects as _); + METRIC_SHARED_PROJECTS.set(metrics.shared_projects as _); let encoder = prometheus::TextEncoder::new(); let metric_families = prometheus::gather();