2022-12-23 18:30:38 +11:00
|
|
|
use tokio::{task, time};
|
|
|
|
use crate::DResult;
|
|
|
|
use crate::db;
|
|
|
|
use log::warn;
|
|
|
|
|
|
|
|
async fn cleanup_session_once(pool: db::DBPool) -> DResult<()> {
|
2022-12-23 21:37:28 +11:00
|
|
|
for listener in pool.clone().get_dead_listeners().await? {
|
|
|
|
pool.clone().cleanup_listener(listener).await?;
|
2022-12-23 18:30:38 +11:00
|
|
|
}
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
fn start_session_cleanup_task(pool: db::DBPool) -> DResult<()> {
|
|
|
|
task::spawn(async move {
|
|
|
|
loop {
|
|
|
|
match cleanup_session_once(pool.clone()).await {
|
|
|
|
Ok(()) => {}
|
|
|
|
Err(e) => {
|
|
|
|
warn!("Error cleaning up sessions: {}", e);
|
|
|
|
time::sleep(time::Duration::from_secs(1)).await;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn start_regular_tasks(pool: db::DBPool) -> DResult<()> {
|
|
|
|
start_session_cleanup_task(pool)
|
|
|
|
}
|