From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id AF3F41FF173 for ; Thu, 1 Aug 2024 09:44:43 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 50DC430555; Thu, 1 Aug 2024 09:44:35 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Thu, 1 Aug 2024 09:44:03 +0200 Message-Id: <20240801074403.36229-32-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240801074403.36229-1-c.ebner@proxmox.com> References: <20240801074403.36229-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.020 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy 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 Subject: [pbs-devel] [PATCH v2 proxmox-backup 31/31] server: sync job: use delete stats provided by the api 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: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Use the API exposed additional delete statistics to generate the task log output for sync jobs in push direction instead of fetching the contents before and after deleting. Signed-off-by: Christian Ebner --- changes since version 1: - not present in previous version src/server/push.rs | 63 ++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/src/server/push.rs b/src/server/push.rs index 959f4180c..b73e79b35 100644 --- a/src/server/push.rs +++ b/src/server/push.rs @@ -11,8 +11,9 @@ use tokio_stream::wrappers::ReceiverStream; use tracing::info; use pbs_api_types::{ - print_store_and_ns, Authid, BackupDir, BackupGroup, BackupNamespace, CryptMode, GroupFilter, - GroupListItem, NamespaceListItem, Operation, RateLimitConfig, Remote, SnapshotListItem, + print_store_and_ns, Authid, BackupDir, BackupGroup, BackupGroupDeleteStats, BackupNamespace, + CryptMode, GroupFilter, GroupListItem, NamespaceListItem, Operation, RateLimitConfig, Remote, + SnapshotListItem, }; use pbs_client::{BackupRepository, BackupWriter, HttpClient, UploadOptions}; use pbs_datastore::data_blob::ChunkInfo; @@ -194,7 +195,7 @@ async fn remove_target_group( params: &PushParameters, namespace: &BackupNamespace, backup_group: &BackupGroup, -) -> Result<(), Error> { +) -> Result { let api_path = format!( "api2/json/admin/datastore/{store}/groups", store = params.target.repo.store(), @@ -209,9 +210,11 @@ async fn remove_target_group( args["ns"] = serde_json::to_value(target_ns.name())?; } - params.target.client.delete(&api_path, Some(args)).await?; + let mut result = params.target.client.delete(&api_path, Some(args)).await?; + let data = result["data"].take(); + let delete_stats: BackupGroupDeleteStats = serde_json::from_value(data)?; - Ok(()) + Ok(delete_stats) } // Check if the namespace is already present on the target, create it otherwise @@ -403,38 +406,26 @@ pub(crate) async fn push_namespace( info!("delete vanished group '{target_group}'"); - let count_before = match fetch_target_groups(params, namespace).await { - Ok(snapshots) => snapshots.len(), - Err(_err) => 0, // ignore errors - }; - - if let Err(err) = remove_target_group(params, namespace, &target_group).await { - info!("{err}"); - errors = true; - continue; - } - - let mut count_after = match fetch_target_groups(params, namespace).await { - Ok(snapshots) => snapshots.len(), - Err(_err) => 0, // ignore errors - }; - - let deleted_groups = if count_after > 0 { - info!("kept some protected snapshots of group '{target_group}'"); - 0 - } else { - 1 - }; - - if count_after > count_before { - count_after = count_before; + match remove_target_group(params, namespace, &target_group).await { + Ok(delete_stats) => { + if delete_stats.protected_snapshots() > 0 { + info!( + "kept {protected_count} protected snapshots of group '{target_group}'", + protected_count = delete_stats.protected_snapshots(), + ); + } + stats.add(SyncStats::from(RemovedVanishedStats { + snapshots: delete_stats.removed_snapshots(), + groups: delete_stats.removed_groups(), + namespaces: 0, + })); + } + Err(err) => { + info!("failed to delete vanished group - {err}"); + errors = true; + continue; + } } - - stats.add(SyncStats::from(RemovedVanishedStats { - snapshots: count_before - count_after, - groups: deleted_groups, - namespaces: 0, - })); } } -- 2.39.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel