Do not commit updates, let the user do

This commit is contained in:
Clément Renault 2019-10-11 11:29:47 +02:00
parent 4b130fa2e5
commit 12b80e08be
No known key found for this signature in database
GPG Key ID: 92ADA4E935E71FA4
6 changed files with 22 additions and 27 deletions

View File

@ -101,7 +101,7 @@ fn index_command(command: IndexCommand, database: Database) -> Result<(), Box<dy
toml::from_str(&string).unwrap()
};
let writer = rkv.write().unwrap();
let mut writer = rkv.write().unwrap();
match index.main.schema(&writer)? {
Some(current_schema) => {
if current_schema != schema {
@ -109,7 +109,10 @@ fn index_command(command: IndexCommand, database: Database) -> Result<(), Box<dy
}
writer.abort();
},
None => index.schema_update(writer, schema)?,
None => {
index.schema_update(&mut writer, schema)?;
writer.commit().unwrap();
},
}
let mut rdr = csv::Reader::from_path(command.csv_data_path)?;
@ -147,9 +150,10 @@ fn index_command(command: IndexCommand, database: Database) -> Result<(), Box<dy
println!();
let writer = rkv.write().unwrap();
let mut writer = rkv.write().unwrap();
println!("committing update...");
let update_id = additions.finalize(writer)?;
let update_id = additions.finalize(&mut writer)?;
writer.commit().unwrap();
max_update_id = max_update_id.max(update_id);
println!("committed update {}", update_id);
}

View File

@ -109,10 +109,9 @@ impl Index {
}
}
pub fn schema_update(&self, mut writer: rkv::Writer, schema: Schema) -> MResult<()> {
update::push_schema_update(&mut writer, self.updates, self.updates_results, schema)?;
writer.commit()?;
pub fn schema_update(&self, writer: &mut rkv::Writer, schema: Schema) -> MResult<()> {
let _ = self.updates_notifier.send(());
update::push_schema_update(writer, self.updates, self.updates_results, schema)?;
Ok(())
}

View File

@ -36,18 +36,16 @@ impl<D> DocumentsAddition<D> {
self.documents.push(document);
}
pub fn finalize(self, mut writer: rkv::Writer) -> MResult<u64>
pub fn finalize(self, writer: &mut rkv::Writer) -> MResult<u64>
where D: serde::Serialize
{
let _ = self.updates_notifier.send(());
let update_id = push_documents_addition(
&mut writer,
writer,
self.updates_store,
self.updates_results_store,
self.documents,
)?;
writer.commit()?;
let _ = self.updates_notifier.send(());
Ok(update_id)
}
}

View File

@ -49,16 +49,14 @@ impl DocumentsDeletion {
Ok(())
}
pub fn finalize(self, mut writer: rkv::Writer) -> MResult<u64> {
pub fn finalize(self, writer: &mut rkv::Writer) -> MResult<u64> {
let _ = self.updates_notifier.send(());
let update_id = push_documents_deletion(
&mut writer,
writer,
self.updates_store,
self.updates_results_store,
self.documents,
)?;
writer.commit()?;
let _ = self.updates_notifier.send(());
Ok(update_id)
}
}

View File

@ -39,16 +39,14 @@ impl SynonymsAddition {
self.synonyms.entry(synonym).or_insert_with(Vec::new).extend(alternatives);
}
pub fn finalize(self, mut writer: rkv::Writer) -> MResult<u64> {
pub fn finalize(self, writer: &mut rkv::Writer) -> MResult<u64> {
let _ = self.updates_notifier.send(());
let update_id = push_synonyms_addition(
&mut writer,
writer,
self.updates_store,
self.updates_results_store,
self.synonyms,
)?;
writer.commit()?;
let _ = self.updates_notifier.send(());
Ok(update_id)
}
}

View File

@ -49,16 +49,14 @@ impl SynonymsDeletion {
}
}
pub fn finalize(self, mut writer: rkv::Writer) -> MResult<u64> {
pub fn finalize(self, writer: &mut rkv::Writer) -> MResult<u64> {
let _ = self.updates_notifier.send(());
let update_id = push_synonyms_deletion(
&mut writer,
writer,
self.updates_store,
self.updates_results_store,
self.synonyms,
)?;
writer.commit()?;
let _ = self.updates_notifier.send(());
Ok(update_id)
}
}