From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup] api2/tape/backup: continue on vanishing snapshots
Date: Tue, 9 Mar 2021 09:43:06 +0100 [thread overview]
Message-ID: <20210309084306.5791-1-d.csapak@proxmox.com> (raw)
when we do a prune during a tape backup, do not cancel the tape backup,
but continue with a warning
the task still fails and prompts the user to check the log
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/api2/tape/backup.rs | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/src/api2/tape/backup.rs b/src/api2/tape/backup.rs
index e8ae887c..8efe1481 100644
--- a/src/api2/tape/backup.rs
+++ b/src/api2/tape/backup.rs
@@ -16,6 +16,7 @@ use proxmox::{
use crate::{
task_log,
+ task_warn,
config::{
self,
cached_user_info::CachedUserInfo,
@@ -395,6 +396,8 @@ fn backup_worker(
task_log!(worker, "latest-only: true (only considering latest snapshots)");
}
+ let mut errors = false;
+
for group in group_list {
let mut snapshot_list = group.list_backups(&datastore.base_path())?;
@@ -406,7 +409,9 @@ fn backup_worker(
continue;
}
task_log!(worker, "backup snapshot {}", info.backup_dir);
- backup_snapshot(worker, &mut pool_writer, datastore.clone(), info.backup_dir)?;
+ if !backup_snapshot(worker, &mut pool_writer, datastore.clone(), info.backup_dir)? {
+ errors = true;
+ }
}
} else {
for info in snapshot_list {
@@ -414,7 +419,9 @@ fn backup_worker(
continue;
}
task_log!(worker, "backup snapshot {}", info.backup_dir);
- backup_snapshot(worker, &mut pool_writer, datastore.clone(), info.backup_dir)?;
+ if !backup_snapshot(worker, &mut pool_writer, datastore.clone(), info.backup_dir)? {
+ errors = true;
+ }
}
}
}
@@ -427,6 +434,10 @@ fn backup_worker(
pool_writer.eject_media(worker)?;
}
+ if errors {
+ bail!("Tape backup finished with some errors. Please check the task log.");
+ }
+
Ok(())
}
@@ -460,11 +471,18 @@ pub fn backup_snapshot(
pool_writer: &mut PoolWriter,
datastore: Arc<DataStore>,
snapshot: BackupDir,
-) -> Result<(), Error> {
+) -> Result<bool, Error> {
task_log!(worker, "start backup {}:{}", datastore.name(), snapshot);
- let snapshot_reader = SnapshotReader::new(datastore.clone(), snapshot.clone())?;
+ let snapshot_reader = match SnapshotReader::new(datastore.clone(), snapshot.clone()) {
+ Ok(reader) => reader,
+ Err(err) => {
+ // ignore missing snapshots and continue
+ task_warn!(worker, "failed opening snapshot '{}': {}", snapshot, err);
+ return Ok(false);
+ }
+ };
let mut chunk_iter = snapshot_reader.chunk_iterator()?.peekable();
@@ -511,5 +529,5 @@ pub fn backup_snapshot(
task_log!(worker, "end backup {}:{}", datastore.name(), snapshot);
- Ok(())
+ Ok(true)
}
--
2.20.1
next reply other threads:[~2021-03-09 8:43 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-09 8:43 Dominik Csapak [this message]
2021-03-09 9:21 ` [pbs-devel] applied: " Dietmar Maurer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210309084306.5791-1-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal