175: Fix update loop infinite loop r=irevoire a=MarinPostma

fix update loop infinite loop in case of udpate error.

close #169


Co-authored-by: marin postma <postma.marin@protonmail.com>
This commit is contained in:
bors[bot] 2021-06-02 23:02:10 +00:00 committed by GitHub
commit 9f40896f4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 5 deletions

View File

@ -168,9 +168,7 @@ impl<S: IndexStore + Sync + Send> IndexActor<S> {
None => self.store.create(uuid, None).await?,
};
let result =
spawn_blocking(move || update_handler.handle_update(meta, data, index)).await?;
Ok(result)
Ok(spawn_blocking(move || update_handler.handle_update(meta, data, index)).await?)
}
async fn handle_settings(&self, uuid: Uuid) -> IndexResult<Settings<Checked>> {

View File

@ -303,9 +303,13 @@ impl UpdateStore {
}
None => None,
};
// Process the pending update using the provided user function.
let result = Handle::current()
.block_on(index_handle.update(index_uuid, processing, file))?;
let handle = Handle::current();
let result = match handle.block_on(index_handle.update(index_uuid, processing.clone(), file)) {
Ok(result) => result,
Err(e) => Err(processing.fail(e.to_string())),
};
// Once the pending update have been successfully processed
// we must remove the content from the pending and processing stores and