Skip to main content

max / makenotwork

1.3 KB · 42 lines History Blame Raw
1 //! Background retention task that periodically prunes old records.
2
3 use tokio::task::JoinHandle;
4 use tracing::info;
5
6 use pom::db;
7
8 use super::CheckInterval;
9
10 pub(crate) fn spawn_prune_task(
11 pool: &sqlx::SqlitePool,
12 prune_days: i64,
13 cancel: &tokio_util::sync::CancellationToken,
14 ) -> JoinHandle<()> {
15 let pool = pool.clone();
16 let cancel = cancel.clone();
17
18 tokio::spawn(async move {
19 let mut ticks = CheckInterval::new(86400, cancel);
20 while ticks.next().await {
21 match db::prune_old_records(&pool, prune_days).await {
22 Ok(r) => info!(
23 "Pruned {} health checks, {} test runs, {} test details, {} peer heartbeats, {} alerts, {} TLS checks, {} incidents, {} route checks, {} DNS checks, {} WHOIS checks, {} backup checks, {} systemd checks",
24 r.health,
25 r.tests,
26 r.test_details,
27 r.heartbeats,
28 r.alerts,
29 r.tls,
30 r.incidents,
31 r.routes,
32 r.dns,
33 r.whois,
34 r.backups,
35 r.systemd
36 ),
37 Err(e) => tracing::error!("Prune failed: {e}"),
38 }
39 }
40 })
41 }
42