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(()) }