From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id AE6591FF2A1 for ; Tue, 16 Jul 2024 10:48:50 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F295EF10B; Tue, 16 Jul 2024 10:49:18 +0200 (CEST) Date: Tue, 16 Jul 2024 10:49:15 +0200 (CEST) From: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= To: Proxmox Backup Server development discussion , Christian Ebner Message-ID: <1329985684.191.1721119755414@webmail.proxmox.com> In-Reply-To: <20240715134628.86889-1-c.ebner@proxmox.com> References: <20240715134628.86889-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.6-Rev67 X-Originating-Client: open-xchange-appsuite X-SPAM-LEVEL: Spam detection results: 0 AWL 0.050 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [catalog.rs, proxmox.com] Subject: Re: [pbs-devel] [PATCH proxmox-backup] client: catalog: improve error message for missing catalog 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" > Christian Ebner hat am 15.07.2024 15:46 CEST geschrieben: > > > Commit c0302805c "client: backup: conditionally write catalog for > file level backups" drops encoding of the dedicated catalog when > archives are encoded as split metadata/data archives with the > `change-detection-mode` set to `data` or `metadata`. > > Since the catalog is not present anymore, accessing these snapshots > via the `proxmox-backup-client catalog` command is obsolete for these > cases, one should opt for the `proxmox-backup-client mount` command > to inspect these archives instead. > > Improve the error message one gets when trying to access such > snapshots by checking if the catalog is present in the manifest and if > not, check if it contains a split pxar archive. > > A caller now gets the following error message: > > ``` > no catalog for split pxar archives, use `mount` instead to inspect content > ``` > > instead of the rather generic > > ``` > Unable to open dynamic index "//catalog.pcat1.didx" > - No such file or directory (os error 2) > ``` alternatively, couldn't we adapt the CLI call like we did the API endpoint, and print a file listing using the metadata archive? mounting and then calling find seems a bit roundabout, if we can easily offer the information directly? > Reported in the community forum: > https://forum.proxmox.com/threads/150713/ > > Signed-off-by: Christian Ebner > --- > proxmox-backup-client/src/catalog.rs | 25 +++++++++++++++++++++++-- > 1 file changed, 23 insertions(+), 2 deletions(-) > > diff --git a/proxmox-backup-client/src/catalog.rs b/proxmox-backup-client/src/catalog.rs > index 276457c1d..7e3bdd4e9 100644 > --- a/proxmox-backup-client/src/catalog.rs > +++ b/proxmox-backup-client/src/catalog.rs > @@ -14,6 +14,7 @@ use pbs_client::tools::key_source::get_encryption_key_password; > use pbs_client::{BackupReader, RemoteChunkReader}; > use pbs_tools::crypt_config::CryptConfig; > use pbs_tools::json::required_string_param; > +use pbs_datastore::manifest::{BackupManifest, FileInfo}; > > use crate::helper; > use crate::{ > @@ -24,6 +25,24 @@ use crate::{ > IndexFile, Shell, CATALOG_NAME, KEYFD_SCHEMA, REPO_URL_SCHEMA, > }; > > +fn lookup_catalog_file_info(manifest: &BackupManifest) -> Result<&FileInfo, Error> { > + let file_info = match manifest.lookup_file_info(CATALOG_NAME) { > + Ok(file_info) => file_info, > + Err(err) => { > + for file_info in manifest.files() { > + if file_info.filename.ends_with(".mpxar.didx") { > + bail!( > + "no catalog for split pxar archives, use `mount` instead to inspect content" > + ); > + } > + } > + return Err(err); > + } > + }; > + > + Ok(file_info) > +} > + > #[api( > input: { > properties: { > @@ -89,14 +108,14 @@ async fn dump_catalog(param: Value) -> Result { > let (manifest, _) = client.download_manifest().await?; > manifest.check_fingerprint(crypt_config.as_ref().map(Arc::as_ref))?; > > + let file_info = lookup_catalog_file_info(&manifest)?; > + > let index = client > .download_dynamic_index(&manifest, CATALOG_NAME) > .await?; > > let most_used = index.find_most_used_chunks(8); > > - let file_info = manifest.lookup_file_info(CATALOG_NAME)?; > - > let chunk_reader = RemoteChunkReader::new( > client.clone(), > crypt_config, > @@ -207,6 +226,8 @@ async fn catalog_shell(param: Value) -> Result<(), Error> { > let (manifest, _) = client.download_manifest().await?; > manifest.check_fingerprint(crypt_config.as_ref().map(Arc::as_ref))?; > > + lookup_catalog_file_info(&manifest)?; > + > let decoder = helper::get_pxar_fuse_accessor( > &server_archive_name, > client.clone(), > -- > 2.39.2 > > > > _______________________________________________ > pbs-devel mailing list > pbs-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel