From f20feff82de5b5c5957ee755c3ca30ac72b3acf3 Mon Sep 17 00:00:00 2001 From: Ben C Date: Thu, 12 Mar 2026 21:36:26 -0400 Subject: [PATCH] Handle SIGTERM --- src/main.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 30c39c9..20bb041 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,6 +26,7 @@ use brotli::enc::{BrotliEncoderParams, backward_references::BrotliEncoderMode}; use log::{debug, error, info, warn}; use prelude::*; use tokio::{ + signal::unix::{SignalKind, signal}, sync::RwLock, time::{self, Duration}, }; @@ -212,7 +213,8 @@ async fn main() -> Result { let mut interval = time::interval(Duration::from_secs(60)); interval.tick().await; - tokio::pin!(interval); + + let mut sigterm = signal(SignalKind::terminate()).context("Failed to listen to SIGTERM")?; info!("Connecting to gateway..."); @@ -225,6 +227,10 @@ async fn main() -> Result { info!("SIGINT: Closing connection and saving"); shard.close(CloseFrame::NORMAL); } + _ = sigterm.recv() => { + info!("SIGTERM: Closing connection and saving"); + shard.close(CloseFrame::NORMAL); + } _ = interval.tick() => { debug!("Save Interval"); if context.pending_save.load(Ordering::Relaxed) { -- 2.51.2