mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-23 05:14:27 +01:00
Merge #2473
2473: fix blocking in dumps r=irevoire a=MarinPostma This PR fixes two blocking calls in the dump process. Co-authored-by: ad hoc <postma.marin@protonmail.com>
This commit is contained in:
commit
db42268888
@ -16,12 +16,14 @@ pub fn generate_uid() -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mod real {
|
mod real {
|
||||||
use std::{fs::File, path::PathBuf, sync::Arc};
|
use std::path::PathBuf;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use log::{info, trace};
|
use log::{info, trace};
|
||||||
use meilisearch_auth::AuthController;
|
use meilisearch_auth::AuthController;
|
||||||
use milli::heed::Env;
|
use milli::heed::Env;
|
||||||
use tokio::fs::create_dir_all;
|
use tokio::fs::create_dir_all;
|
||||||
|
use tokio::io::AsyncWriteExt;
|
||||||
|
|
||||||
use crate::analytics;
|
use crate::analytics;
|
||||||
use crate::compression::to_tar_gz;
|
use crate::compression::to_tar_gz;
|
||||||
@ -78,15 +80,22 @@ mod real {
|
|||||||
|
|
||||||
let meta = MetadataVersion::new_v5(self.index_db_size, self.task_store_size);
|
let meta = MetadataVersion::new_v5(self.index_db_size, self.task_store_size);
|
||||||
let meta_path = temp_dump_path.join(META_FILE_NAME);
|
let meta_path = temp_dump_path.join(META_FILE_NAME);
|
||||||
// TODO: blocking
|
|
||||||
let mut meta_file = File::create(&meta_path)?;
|
let meta_bytes = serde_json::to_vec(&meta)?;
|
||||||
serde_json::to_writer(&mut meta_file, &meta)?;
|
let mut meta_file = tokio::fs::File::create(&meta_path).await?;
|
||||||
|
meta_file.write_all(&meta_bytes).await?;
|
||||||
|
|
||||||
analytics::copy_user_id(&self.db_path, &temp_dump_path);
|
analytics::copy_user_id(&self.db_path, &temp_dump_path);
|
||||||
|
|
||||||
create_dir_all(&temp_dump_path.join("indexes")).await?;
|
create_dir_all(&temp_dump_path.join("indexes")).await?;
|
||||||
|
|
||||||
// TODO: this is blocking!!
|
let db_path = self.db_path.clone();
|
||||||
AuthController::dump(&self.db_path, &temp_dump_path)?;
|
let temp_dump_path_clone = temp_dump_path.clone();
|
||||||
|
tokio::task::spawn_blocking(move || -> Result<()> {
|
||||||
|
AuthController::dump(db_path, temp_dump_path_clone)?;
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
.await??;
|
||||||
TaskStore::dump(
|
TaskStore::dump(
|
||||||
self.env.clone(),
|
self.env.clone(),
|
||||||
&temp_dump_path,
|
&temp_dump_path,
|
||||||
|
Loading…
Reference in New Issue
Block a user