From 490dc2e5ebfaa1c6272e8d7c30dba9392cd85517 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Tue, 10 Mar 2026 20:50:44 -0400 Subject: [PATCH] Fix __send_analytics to delete event file on deserialization failure The file was only deleted after successful deserialization + send. Wrap the read/deserialize/send in an async block so remove_file runs regardless of where the error occurs. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/crates/arc-cli/src/main.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/crates/arc-cli/src/main.rs b/lib/crates/arc-cli/src/main.rs index f6acdc1c3..9cb20c920 100644 --- a/lib/crates/arc-cli/src/main.rs +++ b/lib/crates/arc-cli/src/main.rs @@ -485,9 +485,12 @@ async fn main_inner() -> Result<()> { } }, Command::SendAnalytics { path } => { - let json = std::fs::read(&path)?; - let track: arc_util::telemetry::event::Track = serde_json::from_slice(&json)?; - let result = arc_util::telemetry::sender::send_to_segment(&track).await; + let result = async { + let json = std::fs::read(&path)?; + let track: arc_util::telemetry::event::Track = serde_json::from_slice(&json)?; + arc_util::telemetry::sender::send_to_segment(&track).await + } + .await; let _ = std::fs::remove_file(&path); result?; }