fix dumpv1

This commit is contained in:
mpostma 2021-09-29 12:34:39 +02:00 committed by Tamo
parent 44a2ff07b1
commit 03af99650d
No known key found for this signature in database
GPG Key ID: 20CD8020AFA88D69
4 changed files with 18 additions and 5 deletions

View File

@ -1,8 +1,9 @@
use std::fs::{create_dir_all, File}; use std::fs::{File, create_dir_all};
use std::io::Write; use std::io::Write;
use std::path::Path; use std::path::Path;
use flate2::{read::GzDecoder, write::GzEncoder, Compression}; use flate2::read::GzDecoder;
use flate2::{Compression, write::GzEncoder};
use tar::{Archive, Builder}; use tar::{Archive, Builder};
pub fn to_tar_gz(src: impl AsRef<Path>, dest: impl AsRef<Path>) -> anyhow::Result<()> { pub fn to_tar_gz(src: impl AsRef<Path>, dest: impl AsRef<Path>) -> anyhow::Result<()> {

View File

@ -39,9 +39,9 @@ impl MetadataV1 {
); );
let uuid_store = HeedUuidStore::new(&dst)?; let uuid_store = HeedUuidStore::new(&dst)?;
for index in self.indexes { for index in dbg!(self.indexes) {
let uuid = Uuid::new_v4(); let uuid = Uuid::new_v4();
uuid_store.insert(index.uid.clone(), uuid)?; uuid_store.insert(dbg!(index.uid.clone()), dbg!(uuid))?;
let src = src.as_ref().join(index.uid); let src = src.as_ref().join(index.uid);
load_index( load_index(
&src, &src,
@ -93,7 +93,7 @@ fn load_index(
size: usize, size: usize,
indexer_options: &IndexerOpts, indexer_options: &IndexerOpts,
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
let index_path = dst.as_ref().join(&format!("indexes/index-{}", uuid)); let index_path = dst.as_ref().join(&format!("indexes/{}", uuid));
create_dir_all(&index_path)?; create_dir_all(&index_path)?;
let mut options = EnvOpenOptions::new(); let mut options = EnvOpenOptions::new();

View File

@ -109,6 +109,15 @@ pub fn load_dump(
update_db_size: usize, update_db_size: usize,
indexer_opts: &IndexerOpts, indexer_opts: &IndexerOpts,
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
// Setup a temp directory path in the same path as the database, to prevent cross devices
// references.
let temp_path = dst_path.as_ref().parent().map(ToOwned::to_owned).unwrap_or_else(|| ".".into());
if cfg!(windows) {
std::env::set_var("TMP", temp_path);
} else {
std::env::set_var("TMPDIR", temp_path);
}
let tmp_src = tempfile::tempdir()?; let tmp_src = tempfile::tempdir()?;
let tmp_src_path = tmp_src.path(); let tmp_src_path = tmp_src.path();
@ -120,6 +129,8 @@ pub fn load_dump(
let tmp_dst = tempfile::tempdir()?; let tmp_dst = tempfile::tempdir()?;
println!("temp path: {}", tmp_dst.path().display());
match meta { match meta {
Metadata::V1(meta) => { Metadata::V1(meta) => {
meta.load_dump(&tmp_src_path, tmp_dst.path(), index_db_size, indexer_opts)? meta.load_dump(&tmp_src_path, tmp_dst.path(), index_db_size, indexer_opts)?

View File

@ -75,6 +75,7 @@ impl UpdateFileStore {
create_dir_all(&dst_update_files_path)?; create_dir_all(&dst_update_files_path)?;
println!("src_update file: {}", src_update_files_path.display());
let entries = std::fs::read_dir(src_update_files_path)?; let entries = std::fs::read_dir(src_update_files_path)?;
for entry in entries { for entry in entries {