diff --git a/meilisearch-http/src/index_controller/update_actor/store/mod.rs b/meilisearch-http/src/index_controller/update_actor/store/mod.rs index 34e364497..5949ba5fc 100644 --- a/meilisearch-http/src/index_controller/update_actor/store/mod.rs +++ b/meilisearch-http/src/index_controller/update_actor/store/mod.rs @@ -470,13 +470,6 @@ impl UpdateStore { txn.commit()?; - uuids_to_remove - .iter() - .map(|uuid| update_uuid_to_file_path(&self.path, *uuid)) - .for_each(|path| { - let _ = remove_file(path); - }); - // If the currently processing update is from our index, we wait until it is // finished before returning. This ensure that no write to the index occurs after we delete it. if let State::Processing(uuid, _) = *self.state.read() { @@ -486,6 +479,17 @@ impl UpdateStore { } } + // Finally, remove any outstanding update files. This must be done after waiting for the + // last update to ensure that the update files are not deleted before the update needs + // them. + uuids_to_remove + .iter() + .map(|uuid| update_uuid_to_file_path(&self.path, *uuid)) + .for_each(|path| { + let _ = remove_file(path); + }); + + Ok(()) }