From 0b28c16bf1145fc73ad3c8ea6750ea8e3b6fe0c1 Mon Sep 17 00:00:00 2001 From: Trey Aspelund Date: Fri, 23 Jan 2026 18:55:17 +0000 Subject: [PATCH] Cleanup instance ensure errors Collect errors in a HashMap with a count of how many times they were encountered. Stop logging every instance ensure retry. Signed-off-by: Trey Aspelund --- lib/src/lib.rs | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 85f223f..81a5604 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -1778,28 +1778,42 @@ pub(crate) async fn launch_vm( }; // we just launched the instance, so wait for it to become ready + info!(log, "{}: instance ensure", node.name); let mut success = false; - for _ in 0..30 { - info!(log, "{}: instance ensure", node.name); + let mut retry_count = 0; + let mut errors = HashMap::new(); + while retry_count < 30 { match client.instance_ensure().body(&req).send().await { Ok(_) => { success = true; break; } Err(e) => { - warn!( - log, - "{}: instance ensure error: {e}, retry in 1 second", - node.name - ); + errors + .entry(e.to_string()) + .and_modify(|count| *count += 1) + .or_insert(1); + retry_count += 1; sleep(Duration::from_secs(1)).await; continue; } } } if !success { + error!( + log, + "{}: instance ensure failed after {retry_count} retries", node.name + ); + error!(log, "{}: instance ensure errors: {errors:#?}", node.name); client.instance_ensure().body(&req).send().await?; } + info!( + log, + "{}: instance ensure completed after {retry_count} retries", node.name + ); + if !errors.is_empty() { + warn!(log, "{}: instance ensure errors: {errors:#?}", node.name); + } info!(log, "{}: instance run", node.name); // run vm instance