From cf3473960d15f8b8a72cea6b2bb26beb068b16a1 Mon Sep 17 00:00:00 2001 From: janskiba Date: Mon, 15 Jul 2024 08:22:35 +0000 Subject: [PATCH] fix: better error handeling for logging --- src/main.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6c6400b..1a98dd5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -163,7 +163,10 @@ async fn handle_listen_to_beam_tasks( if !code.is_success() { return Err((code, resp.text().await.unwrap_or_else(|e| e.to_string()))); } - let sender = result_log_sender_map.lock().await.remove(&task_id).ok_or_else(|| (StatusCode::NOT_FOUND, String::new()))?; + let sender = result_log_sender_map.lock().await.remove(&task_id); + if sender.is_none() && CONFIG.log_file.is_some() { + warn!("Logging is enabled but no log sender found for logging results."); + } let stream = async_sse::decode(resp.bytes_stream().map_err(io::Error::other).into_async_read()) .and_then(move |event| { let sender = sender.clone(); @@ -172,7 +175,9 @@ async fn handle_listen_to_beam_tasks( async_sse::Event::Message(m) => { if let Ok(result) = serde_json::from_slice::>(m.data()) { if result.status == beam_lib::WorkStatus::Succeeded { - sender.send(result.from.as_ref().split('.').nth(1).unwrap().to_owned()).await.expect("not dropped"); + if let Some(sender) = sender { + sender.send(result.from.as_ref().split('.').nth(1).unwrap().to_owned()).await.expect("not dropped"); + } } } Ok(Event::default().data(String::from_utf8_lossy(m.data())).event(m.name()))