From ba4d6e96cef53cbd1a3e4c12d0ca75fbf71c19f7 Mon Sep 17 00:00:00 2001 From: Kevin Wang Date: Tue, 4 Aug 2026 04:19:07 -0700 Subject: [PATCH 1/2] fix(supervisor): reply before graceful shutdown --- dstack/supervisor/src/web_api.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dstack/supervisor/src/web_api.rs b/dstack/supervisor/src/web_api.rs index 2521ee20b..dbe0841dc 100644 --- a/dstack/supervisor/src/web_api.rs +++ b/dstack/supervisor/src/web_api.rs @@ -6,7 +6,7 @@ use anyhow::{anyhow, Result}; use or_panic::ResultOrPanic; use rocket::figment::Figment; use rocket::serde::json::Json; -use rocket::{delete, get, post, routes, Build, Rocket, State}; +use rocket::{delete, get, post, routes, Build, Rocket, Shutdown, State}; use serde::{Deserialize, Serialize}; use tokio::signal; use tracing::info; @@ -81,8 +81,12 @@ fn clear(supervisor: &State) -> Json> { } #[post("/shutdown")] -async fn shutdown(supervisor: &State) -> Json> { - to_json(perform_shutdown(supervisor, false).await) +async fn shutdown(supervisor: &State, shutdown: Shutdown) -> Json> { + let result = supervisor.shutdown().await; + if result.is_ok() { + shutdown.notify(); + } + to_json(result) } async fn perform_shutdown(supervisor: &Supervisor, force: bool) -> Result<()> { From d1a315f448d224d27005ed59e5a223851883604a Mon Sep 17 00:00:00 2001 From: Kevin Wang Date: Tue, 4 Aug 2026 19:24:15 +0800 Subject: [PATCH 2/2] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- dstack/supervisor/src/web_api.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dstack/supervisor/src/web_api.rs b/dstack/supervisor/src/web_api.rs index dbe0841dc..a3529b0d5 100644 --- a/dstack/supervisor/src/web_api.rs +++ b/dstack/supervisor/src/web_api.rs @@ -81,10 +81,10 @@ fn clear(supervisor: &State) -> Json> { } #[post("/shutdown")] -async fn shutdown(supervisor: &State, shutdown: Shutdown) -> Json> { +async fn shutdown(supervisor: &State, rocket_shutdown: Shutdown) -> Json> { let result = supervisor.shutdown().await; if result.is_ok() { - shutdown.notify(); + rocket_shutdown.notify(); } to_json(result) }