From e39a456f02c13ed418a168d0135c8d44b6d09e3d 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, 14 insertions(+), 5 deletions(-) diff --git a/cargo-shuttle/src/lib.rs b/cargo-shuttle/src/lib.rs index d019353ce3..783b636d1f 100644 --- a/cargo-shuttle/src/lib.rs +++ b/cargo-shuttle/src/lib.rs @@ -1503,13 +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() + }; - println!("{log_item}"); + bail!(message); + } + }; // Detect versions of deployer and runtime, and print warnings of outdated. if !deployer_version_checked