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 76DF56B971 for ; Wed, 17 Mar 2021 20:38:33 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6CFB7A31F for ; Wed, 17 Mar 2021 20:38:03 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (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 2D8B0A310 for ; Wed, 17 Mar 2021 20:38:02 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id E7E504196D for ; Wed, 17 Mar 2021 20:38:01 +0100 (CET) Message-ID: <611140b4-dd43-2ecd-e03a-d7d93db979de@proxmox.com> Date: Wed, 17 Mar 2021 20:38:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Thunderbird/87.0 Content-Language: en-US To: Proxmox Backup Server development discussion , Dominik Csapak References: <20210316115623.9368-1-d.csapak@proxmox.com> <20210316115623.9368-2-d.csapak@proxmox.com> From: Thomas Lamprecht In-Reply-To: <20210316115623.9368-2-d.csapak@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.046 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment NICE_REPLY_A -0.001 Looks like a legit reply (A) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup 2/3] server/email_notifications: do not panic on template registration 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: Wed, 17 Mar 2021 19:38:33 -0000 On 16.03.21 12:56, Dominik Csapak wrote: > instead print an error and continue, the rendering functions will error > out if one of the templates could not be registered > > if we `.unwrap()` here, it can lead to problems if the templates are > not correct, i.e. we could panic while holding a lock, if something holds > a mutex while this is called for the first time how can they error? And any error (with or without this patch) would lead to emails notification not working anymore, some may seem this as quite fatal error if they do not get notified on erroneous jobs anymore? We may not be able to do much here, that's why above question about what the error source can be. > > Signed-off-by: Dominik Csapak > --- > src/server/email_notifications.rs | 35 +++++++++++++++++++------------ > 1 file changed, 22 insertions(+), 13 deletions(-) > > diff --git a/src/server/email_notifications.rs b/src/server/email_notifications.rs > index 229443f6..59cd016a 100644 > --- a/src/server/email_notifications.rs > +++ b/src/server/email_notifications.rs > @@ -1,10 +1,11 @@ > use anyhow::Error; > use serde_json::json; > > -use handlebars::{Handlebars, Helper, Context, RenderError, RenderContext, Output, HelperResult}; > +use handlebars::{Handlebars, Helper, Context, RenderError, RenderContext, Output, HelperResult, TemplateError}; > > use proxmox::tools::email::sendmail; > use proxmox::api::schema::parse_property_string; > +use proxmox::try_block; > > use crate::{ > config::datastore::DataStoreConfig, > @@ -181,25 +182,33 @@ lazy_static::lazy_static!{ > > static ref HANDLEBARS: Handlebars<'static> = { > let mut hb = Handlebars::new(); > + let result: Result<(), TemplateError> = try_block!({ > > - hb.set_strict_mode(true); > + hb.set_strict_mode(true); > > - hb.register_helper("human-bytes", Box::new(handlebars_humam_bytes_helper)); > - hb.register_helper("relative-percentage", Box::new(handlebars_relative_percentage_helper)); > + hb.register_helper("human-bytes", Box::new(handlebars_humam_bytes_helper)); > + hb.register_helper("relative-percentage", Box::new(handlebars_relative_percentage_helper)); > > - hb.register_template_string("gc_ok_template", GC_OK_TEMPLATE).unwrap(); > - hb.register_template_string("gc_err_template", GC_ERR_TEMPLATE).unwrap(); > + hb.register_template_string("gc_ok_template", GC_OK_TEMPLATE)?; > + hb.register_template_string("gc_err_template", GC_ERR_TEMPLATE)?; > > - hb.register_template_string("verify_ok_template", VERIFY_OK_TEMPLATE).unwrap(); > - hb.register_template_string("verify_err_template", VERIFY_ERR_TEMPLATE).unwrap(); > + hb.register_template_string("verify_ok_template", VERIFY_OK_TEMPLATE)?; > + hb.register_template_string("verify_err_template", VERIFY_ERR_TEMPLATE)?; > > - hb.register_template_string("sync_ok_template", SYNC_OK_TEMPLATE).unwrap(); > - hb.register_template_string("sync_err_template", SYNC_ERR_TEMPLATE).unwrap(); > + hb.register_template_string("sync_ok_template", SYNC_OK_TEMPLATE)?; > + hb.register_template_string("sync_err_template", SYNC_ERR_TEMPLATE)?; > > - hb.register_template_string("tape_backup_ok_template", TAPE_BACKUP_OK_TEMPLATE).unwrap(); > - hb.register_template_string("tape_backup_err_template", TAPE_BACKUP_ERR_TEMPLATE).unwrap(); > + hb.register_template_string("tape_backup_ok_template", TAPE_BACKUP_OK_TEMPLATE)?; > + hb.register_template_string("tape_backup_err_template", TAPE_BACKUP_ERR_TEMPLATE)?; > > - hb.register_template_string("package_update_template", PACKAGE_UPDATES_TEMPLATE).unwrap(); > + hb.register_template_string("package_update_template", PACKAGE_UPDATES_TEMPLATE)?; > + > + Ok(()) > + }); > + > + if let Err(err) = result { > + eprintln!("error during template registration: {}", err); > + } > > hb > }; >