From ddc3a84d9364addc797220610ea3d4c3a86e90bb Mon Sep 17 00:00:00 2001 From: Remi Dettai Date: Fri, 3 Jul 2026 17:03:05 +0200 Subject: [PATCH] Fix split cache metrics --- .../src/split_cache/split_table.rs | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/quickwit/quickwit-storage/src/split_cache/split_table.rs b/quickwit/quickwit-storage/src/split_cache/split_table.rs index 90eb1ab2c99..e97557f03ed 100644 --- a/quickwit/quickwit-storage/src/split_cache/split_table.rs +++ b/quickwit/quickwit-storage/src/split_cache/split_table.rs @@ -136,6 +136,7 @@ impl SplitTable { status: Status::OnDisk { num_bytes }, }; self.insert(split_info); + record_split_added_to_disk(num_bytes); } } } @@ -144,6 +145,36 @@ fn compute_timestamp(start: Instant) -> LastAccessDate { start.elapsed().as_micros() as u64 } +fn record_split_added_to_disk(num_bytes: u64) { + crate::metrics::STORAGE_METRICS + .searcher_split_cache + .in_cache_count + .inc(); + crate::metrics::STORAGE_METRICS + .searcher_split_cache + .in_cache_num_bytes + .add(num_bytes as i64); +} + +fn record_split_evicted(num_bytes: u64) { + crate::metrics::STORAGE_METRICS + .searcher_split_cache + .in_cache_count + .dec(); + crate::metrics::STORAGE_METRICS + .searcher_split_cache + .in_cache_num_bytes + .sub(num_bytes as i64); + crate::metrics::STORAGE_METRICS + .searcher_split_cache + .evict_num_items + .inc(); + crate::metrics::STORAGE_METRICS + .searcher_split_cache + .evict_num_bytes + .inc_by(num_bytes); +} + impl SplitTable { fn remove(&mut self, split_ulid: Ulid) -> Option { let split_info = self.split_to_status.remove(&split_ulid)?; @@ -152,22 +183,6 @@ impl SplitTable { Status::Downloading { .. } => &mut self.downloading_splits, Status::OnDisk { num_bytes } => { self.on_disk_bytes -= num_bytes; - crate::metrics::STORAGE_METRICS - .searcher_split_cache - .in_cache_count - .dec(); - crate::metrics::STORAGE_METRICS - .searcher_split_cache - .in_cache_num_bytes - .sub(num_bytes as i64); - crate::metrics::STORAGE_METRICS - .searcher_split_cache - .evict_num_items - .inc(); - crate::metrics::STORAGE_METRICS - .searcher_split_cache - .evict_num_bytes - .inc_by(num_bytes); &mut self.on_disk_splits } }; @@ -216,14 +231,6 @@ impl SplitTable { Status::Downloading { .. } => self.downloading_splits.insert(split_info.split_key), Status::OnDisk { num_bytes } => { self.on_disk_bytes += num_bytes; - crate::metrics::STORAGE_METRICS - .searcher_split_cache - .in_cache_count - .inc(); - crate::metrics::STORAGE_METRICS - .searcher_split_cache - .in_cache_num_bytes - .add(num_bytes as i64); self.on_disk_splits.insert(split_info.split_key) } }; @@ -335,6 +342,7 @@ impl SplitTable { pub(crate) fn register_as_downloaded(&mut self, split_ulid: Ulid, num_bytes: u64) { self.change_split_status(split_ulid, Status::OnDisk { num_bytes }); + record_split_added_to_disk(num_bytes); } /// Change the state of the given split from candidate to downloading state, @@ -406,6 +414,11 @@ impl SplitTable { } Err(NoRoomAvailable) } else { + for split_info in &split_infos { + if let Status::OnDisk { num_bytes } = split_info.status { + record_split_evicted(num_bytes); + } + } Ok(split_infos .into_iter() .map(|split_info| split_info.split_key.split_ulid)