From f3dc5ae56bde173a3424042351a5334f079ea13b Mon Sep 17 00:00:00 2001 From: jonaro00 <54029719+jonaro00@users.noreply.github.com> Date: Mon, 27 Nov 2023 21:09:40 +0100 Subject: [PATCH] fix(cargo-shuttle): handle log stream errors in deploy command --- cargo-shuttle/src/lib.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/cargo-shuttle/src/lib.rs b/cargo-shuttle/src/lib.rs index d019353ce..5e9c1cf0c 100644 --- a/cargo-shuttle/src/lib.rs +++ b/cargo-shuttle/src/lib.rs @@ -1503,11 +1503,22 @@ impl Shuttle { let mut deployer_version_checked = false; let mut runtime_version_checked = false; loop { - let message = stream.next().await; - if let Some(Ok(msg)) = message { + if let Some(Ok(msg)) = stream.next().await { if let tokio_tungstenite::tungstenite::Message::Text(line) = msg { - let log_item: shuttle_common::LogItem = - serde_json::from_str(&line).context("parsing log line")?; + let log_item = match serde_json::from_str::(&line) { + Ok(log_item) => log_item, + Err(err) => { + debug!(error = %err, "failed to parse message into log item"); + + let message = if let Ok(err) = serde_json::from_str::(&line) { + err.to_string() + } else { + "failed to parse logs, is your cargo-shuttle outdated?".to_string() + }; + + bail!(message); + } + }; println!("{log_item}");