From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 28476748A2 for ; Tue, 22 Jun 2021 09:57:02 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1EF642389D for ; Tue, 22 Jun 2021 09:56:32 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id C8B3323806 for ; Tue, 22 Jun 2021 09:56:26 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id A118D4356C for ; Tue, 22 Jun 2021 09:56:26 +0200 (CEST) From: Hannes Laimer To: pbs-devel@lists.proxmox.com Date: Tue, 22 Jun 2021 09:56:18 +0200 Message-Id: <20210622075620.28681-2-h.laimer@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210622075620.28681-1-h.laimer@proxmox.com> References: <20210622075620.28681-1-h.laimer@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.477 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [verify.rs] Subject: [pbs-devel] [PATCH v2 proxmox-backup 1/3] close #3459: verify-job: move snapshot filter into function X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Jun 2021 07:57:02 -0000 Signed-off-by: Hannes Laimer --- src/backup/verify.rs | 27 +++++++++++++++++++++++++++ src/server/verify_job.rs | 33 +++++++++------------------------ 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/backup/verify.rs b/src/backup/verify.rs index a1b1e6dd..1a51d3fb 100644 --- a/src/backup/verify.rs +++ b/src/backup/verify.rs @@ -575,3 +575,30 @@ pub fn verify_all_backups( Ok(errors) } + +/// Filter for the verification of snapshots +pub fn verify_filter( + ignore_verified_snapshots: bool, + outdated_after: Option, + manifest: &BackupManifest, +) -> bool { + if !ignore_verified_snapshots { + return true; + } + + let raw_verify_state = manifest.unprotected["verify_state"].clone(); + match serde_json::from_value::(raw_verify_state) { + Err(_) => true, // no last verification, always include + Ok(last_verify) => { + match outdated_after { + None => false, // never re-verify if ignored and no max age + Some(max_age) => { + let now = proxmox::tools::time::epoch_i64(); + let days_since_last_verify = (now - last_verify.upid.starttime) / 86400; + + days_since_last_verify > max_age + } + } + } + } +} \ No newline at end of file diff --git a/src/server/verify_job.rs b/src/server/verify_job.rs index 1dd8baa7..878fade5 100644 --- a/src/server/verify_job.rs +++ b/src/server/verify_job.rs @@ -7,7 +7,7 @@ use crate::{ config::verify::VerificationJobConfig, backup::{ DataStore, - BackupManifest, + verify_filter, verify_all_backups, }, task_log, @@ -26,28 +26,6 @@ pub fn do_verification_job( let outdated_after = verification_job.outdated_after; let ignore_verified_snapshots = verification_job.ignore_verified.unwrap_or(true); - let filter = move |manifest: &BackupManifest| { - if !ignore_verified_snapshots { - return true; - } - - let raw_verify_state = manifest.unprotected["verify_state"].clone(); - match serde_json::from_value::(raw_verify_state) { - Err(_) => true, // no last verification, always include - Ok(last_verify) => { - match outdated_after { - None => false, // never re-verify if ignored and no max age - Some(max_age) => { - let now = proxmox::tools::time::epoch_i64(); - let days_since_last_verify = (now - last_verify.upid.starttime) / 86400; - - days_since_last_verify > max_age - } - } - } - } - }; - let (email, notify) = crate::server::lookup_datastore_notify_settings(&verification_job.store); let job_id = format!("{}:{}", @@ -68,7 +46,14 @@ pub fn do_verification_job( } let verify_worker = crate::backup::VerifyWorker::new(worker.clone(), datastore); - let result = verify_all_backups(&verify_worker, worker.upid(), None, Some(&filter)); + let result = verify_all_backups( + &verify_worker, + worker.upid(), + None, + Some(&move |manifest| { + verify_filter(ignore_verified_snapshots, outdated_after, manifest) + }), + ); let job_result = match result { Ok(ref failed_dirs) if failed_dirs.is_empty() => Ok(()), Ok(ref failed_dirs) => { -- 2.20.1