[pbs-devel] applied: [PATCH proxmox-backup v2] client/pull: log snapshots that are skipped because of time

Dietmar Maurer dietmar at proxmox.com
Mon Jun 7 10:51:50 CEST 2021


applied

> On 06/07/2021 10:30 AM Dominik Csapak <d.csapak at proxmox.com> wrote:
> 
>  
> we skip snapshots that are older than the newest snapshot of the group in
> the target datastore, log it so the user can know why it is not synced
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> changes from v1:
> * condense display trait by
>   - omit 0 case (we check fot it anyway)
>   - combine other cases by simplifying language (drop 'that is/are',
>     change to 'snapshot(s)')
> 
>  src/client/pull.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 57 insertions(+)
> 
> diff --git a/src/client/pull.rs b/src/client/pull.rs
> index 95720973..1ee0e0d1 100644
> --- a/src/client/pull.rs
> +++ b/src/client/pull.rs
> @@ -14,6 +14,7 @@ use crate::{
>      backup::*,
>      client::*,
>      server::WorkerTask,
> +    task_log,
>      tools::{compute_file_csum, ParallelHandler},
>  };
>  use proxmox::api::error::{HttpError, StatusCode};
> @@ -443,6 +444,51 @@ pub async fn pull_snapshot_from(
>      Ok(())
>  }
>  
> +struct SkipInfo {
> +    oldest: i64,
> +    newest: i64,
> +    count: u64,
> +}
> +
> +impl SkipInfo {
> +    fn update(&mut self, backup_time: i64) {
> +        self.count += 1;
> +
> +        if backup_time < self.oldest {
> +            self.oldest = backup_time;
> +        }
> +
> +        if backup_time > self.newest {
> +            self.newest = backup_time;
> +        }
> +    }
> +
> +    fn affected(&self) -> Result<String, Error> {
> +        match self.count {
> +            0 => Ok(String::new()),
> +            1 => proxmox::tools::time::epoch_to_rfc3339_utc(self.oldest),
> +            _ => {
> +                Ok(format!(
> +                    "{} .. {}",
> +                    proxmox::tools::time::epoch_to_rfc3339_utc(self.oldest)?,
> +                    proxmox::tools::time::epoch_to_rfc3339_utc(self.newest)?,
> +                ))
> +            }
> +        }
> +    }
> +}
> +
> +impl std::fmt::Display for SkipInfo {
> +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
> +        write!(
> +            f,
> +            "skipped: {} snapshot(s) ({}) older than the newest local snapshot",
> +            self.count,
> +            self.affected().map_err(|_| std::fmt::Error)?
> +        )
> +    }
> +}
> +
>  pub async fn pull_group(
>      worker: &WorkerTask,
>      client: &HttpClient,
> @@ -477,6 +523,12 @@ pub async fn pull_group(
>  
>      progress.group_snapshots = list.len() as u64;
>  
> +    let mut skip_info = SkipInfo {
> +        oldest: i64::MAX,
> +        newest: i64::MIN,
> +        count: 0,
> +    };
> +
>      for (pos, item) in list.into_iter().enumerate() {
>          let snapshot = BackupDir::new(item.backup_type, item.backup_id, item.backup_time)?;
>  
> @@ -495,6 +547,7 @@ pub async fn pull_group(
>  
>          if let Some(last_sync_time) = last_sync {
>              if last_sync_time > backup_time {
> +                skip_info.update(backup_time);
>                  continue;
>              }
>          }
> @@ -552,6 +605,10 @@ pub async fn pull_group(
>          }
>      }
>  
> +    if skip_info.count > 0 {
> +        task_log!(worker, "{}", skip_info);
> +    }
> +
>      Ok(())
>  }
>  
> -- 
> 2.20.1
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel





More information about the pbs-devel mailing list