From 312b62ac95335e1762b70ceb8910374965bd2785 Mon Sep 17 00:00:00 2001 From: Ben Romano Date: Thu, 20 Aug 2026 06:34:50 +0000 Subject: [PATCH] Trace MCP runtime refresh coordination (#39667) ## What changed Add named tracing spans for MCP dirty-state refreshes and time spent waiting to acquire the refresh semaphore. GitOrigin-RevId: 1dbb3572d2061581beb83b3de098d6ec91791104 --- codex-rs/core/src/session/mcp.rs | 1 + codex-rs/core/src/session/mcp_refresh.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/codex-rs/core/src/session/mcp.rs b/codex-rs/core/src/session/mcp.rs index caf6a27924..4c8b13c9e8 100644 --- a/codex-rs/core/src/session/mcp.rs +++ b/codex-rs/core/src/session/mcp.rs @@ -154,6 +154,7 @@ impl Session { } /// Publishes changed MCP state, waiting for any refresh already in progress. + #[tracing::instrument(name = "mcp.runtime.refresh_if_dirty", skip_all)] pub(crate) async fn refresh_mcp_if_dirty(self: &Arc) { let Ok(_refresh) = self.mcp_refresh.acquire().await else { error!("MCP runtime refresh semaphore closed"); diff --git a/codex-rs/core/src/session/mcp_refresh.rs b/codex-rs/core/src/session/mcp_refresh.rs index 0b21fc480e..19cf2f8b9b 100644 --- a/codex-rs/core/src/session/mcp_refresh.rs +++ b/codex-rs/core/src/session/mcp_refresh.rs @@ -30,6 +30,7 @@ impl McpRefresh { self.pending.swap(false, Ordering::AcqRel) } + #[tracing::instrument(name = "mcp.runtime.refresh_wait", skip_all)] pub(super) async fn acquire(&self) -> Result, AcquireError> { self.gate.acquire().await }