From e3ec1cac578fb85476e48dbbc18a7b7c81a78505 Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sun, 14 Jul 2024 10:28:15 +1200 Subject: [PATCH] When shutting down, wait no more than 5 seconds for connections to close --- src/bin/chorus.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bin/chorus.rs b/src/bin/chorus.rs index 0df19a5..553b638 100644 --- a/src/bin/chorus.rs +++ b/src/bin/chorus.rs @@ -148,10 +148,12 @@ async fn main() -> Result<(), Error> { if num_connections != 0 { log::info!(target: "Server", "Waiting for {num_connections} websockets to shutdown..."); - // We will check if all clients have shutdown every 25ms - let interval = tokio::time::interval(Duration::from_millis(25)); + // We will check if all clients have shutdown every 50ms + let interval = tokio::time::interval(Duration::from_millis(50)); tokio::pin!(interval); + let mut ms = 0; + while num_connections != 0 { // If we get another shutdown signal, stop waiting for websockets tokio::select! { @@ -165,6 +167,11 @@ async fn main() -> Result<(), Error> { break; }, _instant = interval.tick() => { + ms += 50; + if ms > 5_000 { + log::info!(target: "Server", "Some connections were hung."); + break; + } num_connections = GLOBALS.num_connections.load(Ordering::Relaxed); continue; }