From ea8a8f7bb25b346ca34398f7ef3964479bd15574 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Fri, 21 Apr 2023 12:51:16 -0700 Subject: [PATCH] load meta/payload if needed during logging In some cases (eg: initial spool -> expiration) we don't have any metadata loaded, causing the logs to say that the metadata wasn't loaded. This commit loads it as needed. --- crates/kumod/src/logging.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/kumod/src/logging.rs b/crates/kumod/src/logging.rs index 455754d2..d0973d15 100644 --- a/crates/kumod/src/logging.rs +++ b/crates/kumod/src/logging.rs @@ -232,7 +232,7 @@ impl Logger { } } - pub fn extract_fields( + pub async fn extract_fields( &self, msg: &Message, ) -> (HashMap, HashMap) { @@ -240,6 +240,8 @@ impl Logger { let mut meta = HashMap::new(); if !self.headers.is_empty() { + msg.load_data_if_needed().await.ok(); + let mut all_headers: HashMap> = HashMap::new(); for (name, value) in msg.get_all_headers().unwrap_or_else(|_| vec![]) { all_headers @@ -297,6 +299,8 @@ pub async fn log_disposition(args: LogDisposition<'_>) { if let Some(logger) = Logger::get() { let mut feedback_report = None; + msg.load_meta_if_needed().await.ok(); + if kind == RecordType::Reception { if let Some(RelayDisposition { log_arf: true, .. }) = relay_disposition { if let Ok(Some(report)) = msg.parse_rfc5965() { @@ -310,7 +314,7 @@ pub async fn log_disposition(args: LogDisposition<'_>) { return; } - let (headers, meta) = logger.extract_fields(&msg); + let (headers, meta) = logger.extract_fields(&msg).await; let record = JsonLogRecord { kind,