diff --git a/disk_cache.rs b/disk_cache.rs index 321287b..c32d001 100644 --- a/disk_cache.rs +++ b/disk_cache.rs @@ -26,7 +26,6 @@ const CACHE_DIR_RELATIVE: &str = "+gitks-cache/cache"; /// Info-refs cache directory relative path under repo prefix. const INFO_REFS_DIR_RELATIVE: &str = "+gitks-cache/info_refs"; -/// Generate a random value for the `latest` file. fn random_value() -> String { use std::fmt::Write; use std::sync::atomic::{AtomicU64, Ordering}; @@ -270,8 +269,10 @@ impl DiskCache { if !self.enabled { return Ok(None); } + let start = std::time::Instant::now(); let path = self.cache_file_path(namespace, digest); if !path.exists() { + crate::metrics::record_cache_op("disk", "miss", start.elapsed()); return Ok(None); } if let Ok(metadata) = std::fs::metadata(&path) @@ -288,6 +289,7 @@ impl DiskCache { if let Some(parent) = path.parent() { std::fs::remove_dir(parent).ok(); } + crate::metrics::record_cache_op("disk", "expired", start.elapsed()); return Ok(None); } let data = std::fs::read(&path).map_err(GitError::Io)?; @@ -295,8 +297,10 @@ impl DiskCache { namespace = %namespace, digest = %digest, size = data.len(), + elapsed_ms = start.elapsed().as_millis() as u64, "cache hit" ); + crate::metrics::record_cache_op("disk", "hit", start.elapsed()); Ok(Some(data)) } @@ -305,6 +309,7 @@ impl DiskCache { if !self.enabled { return Ok(()); } + let start = std::time::Instant::now(); let path = self.cache_file_path(namespace, digest); if let Some(parent) = path.parent() { std::fs::create_dir_all(parent).map_err(GitError::Io)?; @@ -316,8 +321,10 @@ impl DiskCache { namespace = %namespace, digest = %digest, size = data.len(), + elapsed_ms = start.elapsed().as_millis() as u64, "cache entry written" ); + crate::metrics::record_cache_op("disk", "write", start.elapsed()); Ok(()) }