diff --git a/appmgr/src/manager/mod.rs b/appmgr/src/manager/mod.rs index d45ca0462..1e2ef8828 100644 --- a/appmgr/src/manager/mod.rs +++ b/appmgr/src/manager/mod.rs @@ -569,11 +569,24 @@ async fn start(shared: &ManagerSharedState) -> Result<(), Error> { #[instrument(skip(shared))] async fn pause(shared: &ManagerSharedState) -> Result<(), Error> { - shared - .ctx - .docker - .pause_container(&shared.container_name) - .await?; + 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; + } + } + res?; shared .status .store(Status::Paused as usize, std::sync::atomic::Ordering::SeqCst);