From 417358c35db2fa692222dc86e27be051d73e387c Mon Sep 17 00:00:00 2001 From: zain-kabani Date: Mon, 5 Sep 2022 04:02:49 -0400 Subject: [PATCH] Patch graceful shutdown bug (#157) * Fixes non-admin client counting error * Add log when sigterm received and log number of active clients when shutdown timeout is reached --- src/client.rs | 4 ++-- src/main.rs | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/client.rs b/src/client.rs index 3ce4afb..2ddafa0 100644 --- a/src/client.rs +++ b/src/client.rs @@ -204,7 +204,7 @@ pub async fn client_entrypoint( Ok(mut client) => { info!("Client {:?} connected (plain)", addr); - if client.is_admin() { + if !client.is_admin() { let _ = drain.send(1).await; } @@ -229,7 +229,7 @@ pub async fn client_entrypoint( Ok(mut client) => { info!("Client {:?} issued a cancel query request", addr); - if client.is_admin() { + if !client.is_admin() { let _ = drain.send(1).await; } diff --git a/src/main.rs b/src/main.rs index a0c1d7c..7815040 100644 --- a/src/main.rs +++ b/src/main.rs @@ -221,13 +221,16 @@ async fn main() { interval.tick().await; // We're done waiting. - error!("Timed out waiting for clients"); + error!("Graceful shutdown timed out. {} active clients being closed", total_clients); let _ = exit_tx.send(()).await; }); }, - _ = term_signal.recv() => break, + _ = term_signal.recv() => { + info!("Got SIGTERM, closing with {} clients active", total_clients); + break; + }, new_client = listener.accept() => { let (socket, addr) = match new_client {