Skip to content

Commit d5741bf

Browse files
author
Mauricio Cassola
committed
Handle tokio task failure case
1 parent c533357 commit d5741bf

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/main.rs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,15 +243,30 @@ async fn run_server(addr: SocketAddr) -> anyhow::Result<()> {
243243
// spawning a background task that will run the scheduled jobs
244244
// every JOB_PROCESSING_CADENCE_IN_SECS
245245
task::spawn(async move {
246-
let pool = db::ClientPool::new();
247-
248246
loop {
249-
db::run_scheduled_jobs(&*pool.get().await)
250-
.await
251-
.context("run database scheduled jobs")
252-
.unwrap();
247+
let res = task::spawn(async move {
248+
let pool = db::ClientPool::new();
249+
250+
loop {
251+
db::run_scheduled_jobs(&*pool.get().await)
252+
.await
253+
.context("run database scheduled jobs")
254+
.unwrap();
253255

254-
sleep(Duration::from_secs(JOB_PROCESSING_CADENCE_IN_SECS)).await;
256+
sleep(Duration::from_secs(JOB_PROCESSING_CADENCE_IN_SECS)).await;
257+
}
258+
});
259+
260+
match res.await {
261+
Err(err) if err.is_panic() => {
262+
/* handle panic in above task, re-launching */
263+
tracing::trace!("run_scheduled_jobs task died (error={})", err);
264+
}
265+
_ => {
266+
/* break in other case by default */
267+
break;
268+
}
269+
}
255270
}
256271
});
257272

0 commit comments

Comments
 (0)