mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-11-04 09:56:28 +00: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:
		@@ -16,12 +16,14 @@ pub fn generate_uid() -> String {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mod real {
 | 
			
		||||
    use std::{fs::File, path::PathBuf, sync::Arc};
 | 
			
		||||
    use std::path::PathBuf;
 | 
			
		||||
    use std::sync::Arc;
 | 
			
		||||
 | 
			
		||||
    use log::{info, trace};
 | 
			
		||||
    use meilisearch_auth::AuthController;
 | 
			
		||||
    use milli::heed::Env;
 | 
			
		||||
    use tokio::fs::create_dir_all;
 | 
			
		||||
    use tokio::io::AsyncWriteExt;
 | 
			
		||||
 | 
			
		||||
    use crate::analytics;
 | 
			
		||||
    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_path = temp_dump_path.join(META_FILE_NAME);
 | 
			
		||||
            // TODO: blocking
 | 
			
		||||
            let mut meta_file = File::create(&meta_path)?;
 | 
			
		||||
            serde_json::to_writer(&mut meta_file, &meta)?;
 | 
			
		||||
 | 
			
		||||
            let meta_bytes = serde_json::to_vec(&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);
 | 
			
		||||
 | 
			
		||||
            create_dir_all(&temp_dump_path.join("indexes")).await?;
 | 
			
		||||
 | 
			
		||||
            // TODO: this is blocking!!
 | 
			
		||||
            AuthController::dump(&self.db_path, &temp_dump_path)?;
 | 
			
		||||
            let db_path = self.db_path.clone();
 | 
			
		||||
            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(
 | 
			
		||||
                self.env.clone(),
 | 
			
		||||
                &temp_dump_path,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user