diff --git a/meilidb-core/src/database.rs b/meilidb-core/src/database.rs index 9bd8348b3..45ddb56b7 100644 --- a/meilidb-core/src/database.rs +++ b/meilidb-core/src/database.rs @@ -35,10 +35,13 @@ fn update_awaiter(receiver: Receiver<()>, env: heed::Env, update_fn: Arc { - if status.result.is_ok() { - if let Err(e) = writer.commit() { - error!("update transaction failed: {}", e) + match status.result { + Ok(_) => { + if let Err(e) = writer.commit() { + error!("update transaction failed: {}", e) + } } + Err(_) => writer.abort(), } if let Some(ref callback) = *update_fn.load() { diff --git a/meilidb-core/src/store/mod.rs b/meilidb-core/src/store/mod.rs index db3051ddd..c384d62ce 100644 --- a/meilidb-core/src/store/mod.rs +++ b/meilidb-core/src/store/mod.rs @@ -167,6 +167,7 @@ impl Index { } pub fn clear_all(&self, writer: &mut heed::RwTxn) -> MResult { + let _ = self.updates_notifier.send(()); update::push_clear_all(writer, self.updates, self.updates_results) }