From c2c5781f62ea1801b7673bfbfd76e1e007e6c026 Mon Sep 17 00:00:00 2001 From: prplV Date: Fri, 28 Feb 2025 16:23:47 +0300 Subject: [PATCH] session independency (almost) --- crates/api-grub/src/monitoring.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/crates/api-grub/src/monitoring.rs b/crates/api-grub/src/monitoring.rs index dfcc5b8..d637746 100644 --- a/crates/api-grub/src/monitoring.rs +++ b/crates/api-grub/src/monitoring.rs @@ -18,16 +18,22 @@ use log::{error, info, warn}; pub async fn get_metrics_from_monitoring(duration: usize, delay: usize) -> anyhow::Result<()> { let timer = tokio::time::Instant::now(); - loop { - if duration != 0 && timer.elapsed() >= tokio::time::Duration::from_secs(duration as u64) { - break; - } + 'outer: loop { let mut a = MonitoringImporter::new().await; a.start_session().await?; - let vec = a.get_metrics_list().await?; - let _ = a.get_measure_info(Arc::new(vec)).await; - a.close_session().await?; - tokio::time::sleep(tokio::time::Duration::from_secs(delay as u64)).await + 'inner: loop { + if duration != 0 && timer.elapsed() >= tokio::time::Duration::from_secs(duration as u64) { + break 'outer; + } + let vec = a.get_metrics_list().await.unwrap_or_else(|_| vec![]); + if vec.is_empty() { + warn!("Session dropped, creating new ..."); + break 'inner; + } + let _ = a.get_measure_info(Arc::new(vec)).await; + // a.close_session().await?; + tokio::time::sleep(tokio::time::Duration::from_secs(delay as u64)).await + } } Ok(()) }