From 7293628148a9357fc570aeaacc056b654960fd44 Mon Sep 17 00:00:00 2001 From: asonix Date: Sun, 10 Dec 2023 19:26:16 -0600 Subject: [PATCH] put timeout on collecting payloads --- src/middleware/payload.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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;