diff --git a/src/middleware/payload.rs b/src/middleware/payload.rs index 057735e..0af71ae 100644 --- a/src/middleware/payload.rs +++ b/src/middleware/payload.rs @@ -1,6 +1,7 @@ use std::{ future::{ready, Ready}, rc::Rc, + time::Duration, }; use actix_web::{ @@ -18,10 +19,11 @@ async fn drain(rx: flume::Receiver) { let mut set = JoinSet::new(); while let Ok(payload) = rx.recv_async().await { - set.spawn_local(async move { + // draining a payload is a best-effort task - if we can't collect in 2 minutes we bail + set.spawn_local(tokio::time::timeout(Duration::from_secs(120), async move { let mut streamer = payload.into_streamer(); while streamer.next().await.is_some() {} - }); + })); let mut count = 0;