fix #2865: detect and skip vanished snapshots
also when they have been removed/forgotten since we retrieved the snapshot list for the currently syncing backup group. Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
parent
91f5594c08
commit
c1c4a18f48
@ -7,6 +7,7 @@ use std::sync::Arc;
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::io::{Seek, SeekFrom};
|
use std::io::{Seek, SeekFrom};
|
||||||
|
|
||||||
|
use proxmox::api::error::{StatusCode, HttpError};
|
||||||
use crate::server::{WorkerTask};
|
use crate::server::{WorkerTask};
|
||||||
use crate::backup::*;
|
use crate::backup::*;
|
||||||
use crate::api2::types::*;
|
use crate::api2::types::*;
|
||||||
@ -151,7 +152,28 @@ async fn pull_snapshot(
|
|||||||
let mut tmp_manifest_name = manifest_name.clone();
|
let mut tmp_manifest_name = manifest_name.clone();
|
||||||
tmp_manifest_name.set_extension("tmp");
|
tmp_manifest_name.set_extension("tmp");
|
||||||
|
|
||||||
let mut tmp_manifest_file = download_manifest(&reader, &tmp_manifest_name).await?;
|
let download_res = download_manifest(&reader, &tmp_manifest_name).await;
|
||||||
|
let mut tmp_manifest_file = match download_res {
|
||||||
|
Ok(manifest_file) => manifest_file,
|
||||||
|
Err(err) => {
|
||||||
|
match err.downcast_ref::<HttpError>() {
|
||||||
|
Some(HttpError { code, message }) => {
|
||||||
|
match code {
|
||||||
|
&StatusCode::NOT_FOUND => {
|
||||||
|
worker.log(format!("skipping snapshot {} - vanished since start of sync", snapshot));
|
||||||
|
return Ok(());
|
||||||
|
},
|
||||||
|
_ => {
|
||||||
|
bail!("HTTP error {} - {}", code, message);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
return Err(err);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
let tmp_manifest_blob = DataBlob::load(&mut tmp_manifest_file)?;
|
let tmp_manifest_blob = DataBlob::load(&mut tmp_manifest_file)?;
|
||||||
tmp_manifest_blob.verify_crc()?;
|
tmp_manifest_blob.verify_crc()?;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user