add graceful shutdown signal to coordinator and all background tasks

This commit is contained in:
damocles 2026-05-20 13:05:13 +02:00
parent 67b47872e0
commit e27984b74c
6 changed files with 86 additions and 12 deletions

View file

@ -22,11 +22,17 @@ const KEEP_SECS: i64 = 90 * 24 * 3600;
/// the vacuum SQL against its turn-stats.sqlite if present. Errors
/// are logged but don't tear the loop down.
pub fn spawn(coord: Arc<Coordinator>) {
let mut shutdown = coord.shutdown_rx();
tokio::spawn(async move {
loop {
sweep_once();
let _ = &coord;
tokio::time::sleep(VACUUM_INTERVAL).await;
tokio::select! {
_ = tokio::time::sleep(VACUUM_INTERVAL) => {}
_ = shutdown.changed() => {
tracing::info!("stats vacuum: shutdown signal received");
break;
}
}
}
});
}