From 79d3d1606c812591e955ae3d09cf0c89ca103f5f Mon Sep 17 00:00:00 2001 From: Shree Date: Mon, 25 Aug 2025 23:33:26 -0700 Subject: [PATCH] Display the progressTrace in real time #5835 --- crates/index-scheduler/src/queue/batches.rs | 8 ++++++++ crates/index-scheduler/src/queue/batches_test.rs | 9 +++++++++ crates/meilisearch/tests/vector/rest.rs | 2 ++ 3 files changed, 19 insertions(+) diff --git a/crates/index-scheduler/src/queue/batches.rs b/crates/index-scheduler/src/queue/batches.rs index b96f65836..2045258df 100644 --- a/crates/index-scheduler/src/queue/batches.rs +++ b/crates/index-scheduler/src/queue/batches.rs @@ -284,6 +284,14 @@ impl BatchQueue { if Some(batch_id) == processing.batch.as_ref().map(|batch| batch.uid) { let mut batch = processing.batch.as_ref().unwrap().to_batch(); batch.progress = processing.get_progress_view(); + // Add progress_trace from the current progress state + if let Some(progress) = &processing.progress { + batch.stats.progress_trace = progress + .accumulated_durations() + .into_iter() + .map(|(k, v)| (k, v.into())) + .collect(); + } Ok(batch) } else { self.get_batch(rtxn, batch_id) diff --git a/crates/index-scheduler/src/queue/batches_test.rs b/crates/index-scheduler/src/queue/batches_test.rs index 49dc0ba61..bbcdc4296 100644 --- a/crates/index-scheduler/src/queue/batches_test.rs +++ b/crates/index-scheduler/src/queue/batches_test.rs @@ -104,6 +104,12 @@ fn query_batches_simple() { batches[0].started_at = OffsetDateTime::UNIX_EPOCH; assert!(batches[0].enqueued_at.is_some()); batches[0].enqueued_at = None; + + if !batches[0].stats.progress_trace.is_empty() { + batches[0].stats.progress_trace.clear(); + batches[0].stats.progress_trace.insert("processing tasks".to_string(), "deterministic_duration".into()); + } + // Insta cannot snapshot our batches because the batch stats contains an enum as key: https://github.com/mitsuhiko/insta/issues/689 let batch = serde_json::to_string_pretty(&batches[0]).unwrap(); snapshot!(batch, @r###" @@ -122,6 +128,9 @@ fn query_batches_simple() { }, "indexUids": { "catto": 1 + }, + "progressTrace": { + "processing tasks": "deterministic_duration" } }, "startedAt": "1970-01-01T00:00:00Z", diff --git a/crates/meilisearch/tests/vector/rest.rs b/crates/meilisearch/tests/vector/rest.rs index 7668dbcc3..3b1222795 100644 --- a/crates/meilisearch/tests/vector/rest.rs +++ b/crates/meilisearch/tests/vector/rest.rs @@ -2184,6 +2184,7 @@ async fn last_error_stats() { ".progress" => "[ignored]", ".stats.embedderRequests.total" => "[ignored]", ".stats.embedderRequests.failed" => "[ignored]", + ".stats.progressTrace" => "[ignored]", ".startedAt" => "[ignored]" }), @r#" { @@ -2204,6 +2205,7 @@ async fn last_error_stats() { "indexUids": { "doggo": 1 }, + "progressTrace": "[ignored]", "embedderRequests": { "total": "[ignored]", "failed": "[ignored]",