using journal file before overwriting previous db
This commit is contained in:
parent
111e830410
commit
0ca317784e
|
@ -429,17 +429,35 @@ impl TorrentTracker {
|
||||||
// cleanup db
|
// cleanup db
|
||||||
self.cleanup();
|
self.cleanup();
|
||||||
|
|
||||||
// save db.
|
// save journal db.
|
||||||
match std::fs::File::create(db_path) {
|
let mut journal_path = std::path::PathBuf::from(db_path);
|
||||||
Err(err) => {
|
|
||||||
error!("failed to open file '{}': {}", db_path, err);
|
let mut filename = String::from(journal_path.file_name().unwrap().to_str().unwrap());
|
||||||
|
filename.push_str("-journal");
|
||||||
|
|
||||||
|
journal_path.set_file_name(filename.as_str());
|
||||||
|
let jp_str = journal_path.as_path().to_str().unwrap();
|
||||||
|
|
||||||
|
// scope to make sure backup file is dropped/closed.
|
||||||
|
{
|
||||||
|
let mut file = match std::fs::File::create(jp_str) {
|
||||||
|
Err(err) => {
|
||||||
|
error!("failed to open file '{}': {}", db_path, err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Ok(v) => v,
|
||||||
|
};
|
||||||
|
trace!("writing database to {}", jp_str);
|
||||||
|
if let Err(err) = self.save_database(&mut file) {
|
||||||
|
error!("failed saving database. {}", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Ok(mut file) => {
|
}
|
||||||
if let Err(err) = self.save_database(&mut file) {
|
|
||||||
error!("failed saving database. {}", err);
|
// overwrite previous db
|
||||||
}
|
trace!("renaming '{}' to '{}'", jp_str, db_path);
|
||||||
}
|
if let Err(err) = std::fs::rename(jp_str, db_path) {
|
||||||
|
error!("failed to move db backup. {}", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue