diff --git a/CHANGELOG.md b/CHANGELOG.md index a36808eb4..f5af34c0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,4 @@ - Add support of nested null, boolean and seq values (#571 and #568, #574) - Fixed the core benchmark (#576) - Publish an ARMv7 and ARMv8 binaries on releases (#540 and #581) + - Fixing a bug where the result of the update status after the first update was empty (#542) diff --git a/meilisearch-core/src/store/mod.rs b/meilisearch-core/src/store/mod.rs index 0b12f94dc..48bcfcef8 100644 --- a/meilisearch-core/src/store/mod.rs +++ b/meilisearch-core/src/store/mod.rs @@ -334,14 +334,14 @@ impl Index { for id in 0..=last_id { if let Some(update) = self.update_status(reader, id)? { updates.push(update); - last_update_result_id = id; + last_update_result_id = id + 1; } } } // retrieve all enqueued updates if let Some((last_id, _)) = self.updates.last_update(reader)? { - for id in last_update_result_id + 1..=last_id { + for id in last_update_result_id..=last_id { if let Some(update) = self.update_status(reader, id)? { updates.push(update); } diff --git a/meilisearch-http/tests/index.rs b/meilisearch-http/tests/index.rs index ab10cf35b..e0b44b9b5 100644 --- a/meilisearch-http/tests/index.rs +++ b/meilisearch-http/tests/index.rs @@ -1,5 +1,6 @@ use assert_json_diff::assert_json_eq; use serde_json::json; +use serde_json::Value; mod common; @@ -657,3 +658,31 @@ fn check_add_documents_without_primary_key() { assert_eq!(status_code, 400); assert_json_eq!(response, expected, ordered: false); } + +#[test] +fn check_first_update_should_bring_up_processed_status_after_first_docs_addition(){ + let mut server = common::Server::with_uid("movies"); + + let body = json!({ + "uid": "movies", + }); + + // 1. Create Index + let (response, status_code) = server.create_index(body); + assert_eq!(status_code, 201); + assert_eq!(response["primaryKey"], json!(null)); + + let dataset = include_bytes!("assets/movies.json"); + + let body: Value = serde_json::from_slice(dataset).unwrap(); + + // 2. Index the documents from movies.json, present inside of assets directory + server.add_or_replace_multiple_documents(body); + + // 3. Fetch the status of the indexing done above. + let (response, status_code) = server.get_all_updates_status(); + + // 4. Verify the fetch is successful and indexing status is 'processed' + assert_eq!(status_code, 200); + assert_eq!(response[0]["status"], "processed"); +}