108: use write senders for updates r=MarinPostma a=MarinPostma

 Use write senders to send updates to the `IndexActor`, so updates are performed sequentially on all indexes.

Co-authored-by: mpostma <postma.marin@protonmail.com>
This commit is contained in:
bors[bot] 2021-03-22 14:18:43 +00:00 committed by GitHub
commit 2f418ee767
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 5 deletions

2
Cargo.lock generated
View File

@ -1786,7 +1786,7 @@ dependencies = [
[[package]] [[package]]
name = "meilisearch-http" name = "meilisearch-http"
version = "0.21.0-alpha" version = "0.21.0-alpha.1"
dependencies = [ dependencies = [
"actix-cors", "actix-cors",
"actix-http 3.0.0-beta.4", "actix-http 3.0.0-beta.4",

View File

@ -280,7 +280,7 @@ impl<S: IndexStore + Sync + Send> IndexActor<S> {
meta: Processing<UpdateMeta>, meta: Processing<UpdateMeta>,
data: File, data: File,
) -> Result<UpdateResult> { ) -> Result<UpdateResult> {
debug!("Processing update {}", meta.id()); log::info!("Processing update {}", meta.id());
let uuid = meta.index_uuid(); let uuid = meta.index_uuid();
let update_handler = self.update_handler.clone(); let update_handler = self.update_handler.clone();
let index = match self.store.get(*uuid).await? { let index = match self.store.get(*uuid).await? {
@ -443,7 +443,7 @@ impl IndexActorHandle {
) -> anyhow::Result<UpdateResult> { ) -> anyhow::Result<UpdateResult> {
let (ret, receiver) = oneshot::channel(); let (ret, receiver) = oneshot::channel();
let msg = IndexMsg::Update { ret, meta, data }; let msg = IndexMsg::Update { ret, meta, data };
let _ = self.read_sender.send(msg).await; let _ = self.write_sender.send(msg).await;
Ok(receiver.await.expect("IndexActor has been killed")?) Ok(receiver.await.expect("IndexActor has been killed")?)
} }
@ -500,7 +500,7 @@ impl IndexActorHandle {
pub async fn delete(&self, uuid: Uuid) -> Result<()> { pub async fn delete(&self, uuid: Uuid) -> Result<()> {
let (ret, receiver) = oneshot::channel(); let (ret, receiver) = oneshot::channel();
let msg = IndexMsg::Delete { uuid, ret }; let msg = IndexMsg::Delete { uuid, ret };
let _ = self.read_sender.send(msg).await; let _ = self.write_sender.send(msg).await;
Ok(receiver.await.expect("IndexActor has been killed")?) Ok(receiver.await.expect("IndexActor has been killed")?)
} }

View File

@ -19,7 +19,6 @@ async fn get_settings() {
assert_eq!(settings.keys().len(), 4); assert_eq!(settings.keys().len(), 4);
assert_eq!(settings["displayedAttributes"], json!(["*"])); assert_eq!(settings["displayedAttributes"], json!(["*"]));
assert_eq!(settings["searchableAttributes"], json!(["*"])); assert_eq!(settings["searchableAttributes"], json!(["*"]));
println!("{:?}", settings);
assert_eq!(settings["attributesForFaceting"], json!({})); assert_eq!(settings["attributesForFaceting"], json!({}));
assert_eq!( assert_eq!(
settings["rankingRules"], settings["rankingRules"],