all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Christian Ebner <c.ebner@proxmox.com>
To: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>,
	Gabriel Goller <g.goller@proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup] log: retrieve `ReaderEnvironment` debug flag from tracing
Date: Tue, 16 Jul 2024 10:21:38 +0200	[thread overview]
Message-ID: <f166e0f4-ae95-415e-8bf7-c150473f6d35@proxmox.com> (raw)
In-Reply-To: <20240715151301.550787-1-g.goller@proxmox.com>

one comment inline

On 7/15/24 17:13, Gabriel Goller wrote:
> Don't hardcode the debug flag but retrieve the currently enabled level
> using tracing. This will change the default log-behavior and disable
> some logs that have been printed previously. F.e.: the "protocol upgrade
> done" message is not visible anymore per default because it is printed
> with debug.
> 
> Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
> ---
> 
> Note that this still keeps the behavior of the client controlling the
> log-level of the server, except if the server has a minimum log level of
> warn.
> 
>   src/api2/backup/environment.rs | 11 ++++++++---
>   src/api2/reader/environment.rs |  2 +-
>   src/server/pull.rs             | 11 +++++++++--
>   3 files changed, 18 insertions(+), 6 deletions(-)
> 
> diff --git a/src/api2/backup/environment.rs b/src/api2/backup/environment.rs
> index 51f4a15b3c95..5bd508d00753 100644
> --- a/src/api2/backup/environment.rs
> +++ b/src/api2/backup/environment.rs
> @@ -2,6 +2,7 @@ use anyhow::{bail, format_err, Error};
>   use nix::dir::Dir;
>   use std::collections::HashMap;
>   use std::sync::{Arc, Mutex};
> +use tracing::info;
>   
>   use ::serde::Serialize;
>   use serde_json::{json, Value};
> @@ -141,7 +142,7 @@ impl BackupEnvironment {
>               auth_id,
>               worker,
>               datastore,
> -            debug: false,
> +            debug: tracing::enabled!(tracing::Level::DEBUG),
>               formatter: JSON_FORMATTER,
>               backup_dir,
>               last_backup: None,
> @@ -687,12 +688,16 @@ impl BackupEnvironment {
>       }
>   
>       pub fn log<S: AsRef<str>>(&self, msg: S) {
> -        self.worker.log_message(msg);
> +        info!("{}", msg.as_ref());
>       }
>   
>       pub fn debug<S: AsRef<str>>(&self, msg: S) {
>           if self.debug {
> -            self.worker.log_message(msg);
> +            // This is kinda weird, we would like to use debug! here and automatically filter it,
> +            // but self.debug is set from the client-side and the logs are printed on client and
> +            // server side. This means that if the client sets the log level to debug, both server
> +            // and client need to have 'debug' logs printed.
> +            info!("{}", msg.as_ref());

This is indeed a bit odd: The fact that the client can set the `debug` 
flag when upgrading to the backup protocol, but cannot and should not 
control the filter level makes this a bit strange.

So I would suggest to rename this method to something like 
`client_debug` (or something better fitting?) an instead of calling the 
`info` macro directly, call `self.log` instead if `self.debug` is set. 
By this, it should at least be a bit more clear what is going on and one 
cannot accidentally loose these debug messages as the same codepath is 
then used for generating the event.

>           }
>       }
>   
> diff --git a/src/api2/reader/environment.rs b/src/api2/reader/environment.rs
> index 37039da2f573..25593bd0eeba 100644
> --- a/src/api2/reader/environment.rs
> +++ b/src/api2/reader/environment.rs
> @@ -39,7 +39,7 @@ impl ReaderEnvironment {
>               auth_id,
>               worker,
>               datastore,
> -            debug: false,
> +            debug: tracing::enabled!(tracing::Level::DEBUG),
>               formatter: JSON_FORMATTER,
>               backup_dir,
>               allowed_chunks: Arc::new(RwLock::new(HashSet::new())),
> diff --git a/src/server/pull.rs b/src/server/pull.rs
> index 1ff9b92ab177..ff4b3a4168fa 100644
> --- a/src/server/pull.rs
> +++ b/src/server/pull.rs
> @@ -278,8 +278,15 @@ impl PullSource for RemoteSource {
>           ns: &BackupNamespace,
>           dir: &BackupDir,
>       ) -> Result<Arc<dyn PullReader>, Error> {
> -        let backup_reader =
> -            BackupReader::start(&self.client, None, self.repo.store(), ns, dir, true).await?;
> +        let backup_reader = BackupReader::start(
> +            &self.client,
> +            None,
> +            self.repo.store(),
> +            ns,
> +            dir,
> +            tracing::enabled!(tracing::Level::DEBUG),
> +        )
> +        .await?;
>           Ok(Arc::new(RemoteReader {
>               backup_reader,
>               dir: dir.clone(),



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


  reply	other threads:[~2024-07-16  8:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-15 15:13 Gabriel Goller
2024-07-16  8:21 ` Christian Ebner [this message]
2024-07-16  8:38   ` Christian Ebner
2024-07-16  9:07   ` Gabriel Goller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f166e0f4-ae95-415e-8bf7-c150473f6d35@proxmox.com \
    --to=c.ebner@proxmox.com \
    --cc=g.goller@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal