From 64e38393dfdbb9b226edee7b657f9fe51b8daa83 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Tue, 15 Feb 2022 12:06:44 -0700 Subject: [PATCH] handle crash loops better --- backend/src/manager/mod.rs | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/backend/src/manager/mod.rs b/backend/src/manager/mod.rs index 5baaeebb0..6dd178f65 100644 --- a/backend/src/manager/mod.rs +++ b/backend/src/manager/mod.rs @@ -495,6 +495,7 @@ async fn manager_thread_loop(mut recv: Receiver, thread_shared: &Arc {} } tracing::error!("service crashed: {}: {}", e.0, e.1); + tokio::time::sleep(Duration::from_secs(15)).await; } Err(e) => { tracing::error!("failed to start service: {}", e); @@ -572,24 +573,16 @@ async fn start(shared: &ManagerSharedState) -> Result<(), Error> { #[instrument(skip(shared))] async fn pause(shared: &ManagerSharedState) -> Result<(), Error> { - let mut res = Ok(()); - for _retry in 0..5 { - res = shared - .ctx - .docker - .pause_container(&shared.container_name) - .await; - if !matches!( - res, - Err(bollard::errors::Error::DockerResponseServerError { - status_code: 500, - .. - }), - ) { - break; - } + if let Err(e) = shared + .ctx + .docker + .pause_container(&shared.container_name) + .await + { + tracing::error!("failed to pause container. stopping instead. {}", e); + tracing::debug!("{:?}", e); + return stop(shared).await; } - res?; shared .status .store(Status::Paused as usize, std::sync::atomic::Ordering::SeqCst);