From 93003229f10638a0f4dd96fb2f37918e48f48fe2 Mon Sep 17 00:00:00 2001 From: oabrivard Date: Thu, 26 Mar 2026 00:44:04 +0100 Subject: [PATCH] fix: add periodic expired session cleanup (hourly) Co-Authored-By: Claude Sonnet 4.6 --- backend/src/main.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/src/main.rs b/backend/src/main.rs index c6b0916..f13c52c 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -63,6 +63,27 @@ async fn main() -> anyhow::Result<()> { tracing::warn!("Failed to load provider rate limits from DB: {:?}. Using defaults.", e); } + // Periodic session cleanup (every hour) + { + let cleanup_pool = state.pool.clone(); + tokio::spawn(async move { + let mut interval = tokio::time::interval(std::time::Duration::from_secs(3600)); + loop { + interval.tick().await; + match crate::db::sessions::delete_expired(&cleanup_pool).await { + Ok(count) => { + if count > 0 { + tracing::info!(deleted = count, "Cleaned up expired sessions"); + } + } + Err(e) => { + tracing::warn!(error = %e, "Failed to clean up expired sessions"); + } + } + } + }); + } + let shutdown_pool = state.pool.clone(); let app = router::build_router(state, &config);