From 8b5f72b176940d76fe320d14a030544a81b12055 Mon Sep 17 00:00:00 2001 From: Stefan Reiter Date: Tue, 11 Aug 2020 10:50:40 +0200 Subject: [PATCH] Revert "backup: ensure base snapshots are still available after backup" This reverts commit d53fbe24741ed3bd920ee1c61bc163b1874b7c82. The HashSet and "register" function are unnecessary, as we already know which backup is the one we need to check: the last one, stored as 'last_backup'. Signed-off-by: Stefan Reiter --- src/api2/backup.rs | 1 - src/api2/backup/environment.rs | 21 +-------------------- src/backup/backup_info.rs | 2 +- 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/src/api2/backup.rs b/src/api2/backup.rs index f541eb97..eda83bb3 100644 --- a/src/api2/backup.rs +++ b/src/api2/backup.rs @@ -661,7 +661,6 @@ fn download_previous( }; if let Some(index) = index { env.log(format!("register chunks in '{}' from previous backup.", archive_name)); - env.register_base_snapshot(last_backup.backup_dir.clone()); for pos in 0..index.index_count() { let info = index.chunk_info(pos).unwrap(); diff --git a/src/api2/backup/environment.rs b/src/api2/backup/environment.rs index f8c3f651..e4d280a4 100644 --- a/src/api2/backup/environment.rs +++ b/src/api2/backup/environment.rs @@ -1,6 +1,6 @@ use anyhow::{bail, format_err, Error}; use std::sync::{Arc, Mutex}; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; use ::serde::{Serialize}; use serde_json::{json, Value}; @@ -73,7 +73,6 @@ struct SharedBackupState { dynamic_writers: HashMap, fixed_writers: HashMap, known_chunks: HashMap<[u8;32], u32>, - base_snapshots: HashSet, backup_size: u64, // sums up size of all files backup_stat: UploadStatistic, } @@ -127,7 +126,6 @@ impl BackupEnvironment { dynamic_writers: HashMap::new(), fixed_writers: HashMap::new(), known_chunks: HashMap::new(), - base_snapshots: HashSet::new(), backup_size: 0, backup_stat: UploadStatistic::new(), }; @@ -146,13 +144,6 @@ impl BackupEnvironment { } } - /// Register a snapshot as a predecessor of the current backup. - /// It's existance will be ensured on finishing. - pub fn register_base_snapshot(&self, snap: BackupDir) { - let mut state = self.state.lock().unwrap(); - state.base_snapshots.insert(snap); - } - /// Register a Chunk with associated length. /// /// We do not fully trust clients, so a client may only use registered @@ -489,16 +480,6 @@ impl BackupEnvironment { self.datastore.store_manifest(&self.backup_dir, manifest) .map_err(|err| format_err!("unable to store manifest blob - {}", err))?; - for snap in &state.base_snapshots { - let path = self.datastore.snapshot_path(snap); - if !path.exists() { - bail!( - "base snapshot {} was removed during backup, cannot finish as chunks might be missing", - snap - ); - } - } - // marks the backup as successful state.finished = true; diff --git a/src/backup/backup_info.rs b/src/backup/backup_info.rs index 26b57fae..1d42d79d 100644 --- a/src/backup/backup_info.rs +++ b/src/backup/backup_info.rs @@ -173,7 +173,7 @@ impl std::str::FromStr for BackupGroup { /// Uniquely identify a Backup (relative to data store) /// /// We also call this a backup snaphost. -#[derive(Debug, Eq, PartialEq, Hash, Clone)] +#[derive(Debug, Eq, PartialEq, Clone)] pub struct BackupDir { /// Backup group group: BackupGroup,