From 45c1c3d183f7a5242ab406bd3ec63ce451c1ef2a Mon Sep 17 00:00:00 2001 From: jokellyfenton <33421238+jokellyfenton@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:26:22 +0100 Subject: [PATCH] fix: update SSEActor error logging (#2052) Co-authored-by: Jo Kelly-Fenton --- crates/mcp-client/src/transport/mod.rs | 8 ++++++++ crates/mcp-client/src/transport/sse.rs | 9 +++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/mcp-client/src/transport/mod.rs b/crates/mcp-client/src/transport/mod.rs index 25bcef74..e2a66b26 100644 --- a/crates/mcp-client/src/transport/mod.rs +++ b/crates/mcp-client/src/transport/mod.rs @@ -118,6 +118,14 @@ impl PendingRequests { pub async fn clear(&self) { self.requests.write().await.clear(); } + + pub async fn len(&self) -> usize { + self.requests.read().await.len() + } + + pub async fn is_empty(&self) -> bool { + self.len().await == 0 + } } pub mod stdio; diff --git a/crates/mcp-client/src/transport/sse.rs b/crates/mcp-client/src/transport/sse.rs index 90dc5f2f..8a564708 100644 --- a/crates/mcp-client/src/transport/sse.rs +++ b/crates/mcp-client/src/transport/sse.rs @@ -210,8 +210,13 @@ impl SseActor { } // mpsc channel closed => no more outgoing messages - tracing::error!("SseActor: outgoing message loop ended. Clearing pending requests."); - pending_requests.clear().await; + let pending = pending_requests.len().await; + if pending > 0 { + tracing::error!("SSE stream ended or encountered an error with {pending} unfulfilled pending requests."); + pending_requests.clear().await; + } else { + tracing::info!("SseActor shutdown cleanly. No pending requests."); + } } }