From 292b601755f099efa08a2babb85f3d0b84ad6b2c Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 27 Sep 2025 17:20:44 +0000 Subject: [PATCH] Fix possibly dependent conditions for server shutdown in config worker. Signed-off-by: Jason Volk --- src/service/config/mod.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/service/config/mod.rs b/src/service/config/mod.rs index 50eb332f..461aec27 100644 --- a/src/service/config/mod.rs +++ b/src/service/config/mod.rs @@ -20,11 +20,15 @@ impl crate::Service for Service { } async fn worker(self: Arc) -> Result { + let mut signaled = self.server.signal.subscribe(); while self.server.running() { - if self.server.signal.subscribe().recv().await == Ok(SIGNAL) { - if let Err(e) = self.handle_reload() { - error!("Failed to reload config: {e}"); - } + tokio::select! { + () = self.server.until_shutdown() => break, + signal = signaled.recv() => if signal != Ok(SIGNAL) { continue; }, + } + + if let Err(e) = self.handle_reload() { + error!("Failed to reload config: {e}"); } }