From 93227ce02e484c1e727bfd07ceeb72fd95774170 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Mon, 12 Jan 2026 09:52:36 +0000 Subject: fix(metrics): count repositories on disk on each metrics request Implements ngit_repositories_total metric by counting *.git directories on disk every time /metrics is requested (~15s interval by Prometheus). This approach is simpler than increment-on-create because: - No need to pass metrics through the relay builder chain - Always accurate and self-correcting - Negligible performance impact (~100-200 dir entries) Changes: - Add count_repositories_on_disk() static method to Metrics - Update Metrics::render() to count repos before encoding metrics - Pass git_data_path to Metrics::new() in main.rs - Consolidate metrics tests to avoid global Prometheus registry conflicts Fixes repository count metric issue from Phase 8 deployment plan. --- src/main.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 44545b5..8b959a6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,9 +40,12 @@ async fn main() -> Result<()> { // Initialize metrics if enabled let metrics = if config.metrics_enabled { info!("Metrics enabled on /metrics endpoint"); - Some(Arc::new(Metrics::new( + let m = Arc::new(Metrics::new( config.metrics_connection_per_ip_abuse_threshold, - ))) + Some(config.effective_git_data_path()), + )); + info!("Repository count will be updated on each metrics request"); + Some(m) } else { info!("Metrics disabled"); None -- cgit v1.2.3