From c716917092dc5721b9220761a66a85b73072ca15 Mon Sep 17 00:00:00 2001 From: Gilberto <37253958+gilsmt@users.noreply.github.com> Date: Sat, 19 Sep 2026 08:03:31 +0000 Subject: [PATCH] fix(observability): attribute outage refusals to caller, bucket, and probe count Co-authored-by: polylane[bot] <277585245+polylane[bot]@users.noreply.github.com> --- app/mcp/route.ts | 12 +++++++++--- lib/collections/link-reachability.ts | 2 ++ lib/integrations/mcp/rate-limit.ts | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/mcp/route.ts b/app/mcp/route.ts index 2d3b5bde..bc09f40c 100644 --- a/app/mcp/route.ts +++ b/app/mcp/route.ts @@ -129,7 +129,7 @@ async function authorizeToolCall( }; } if (rateLimit.status === "unavailable") { - return { result: rateLimitUnavailableResult() }; + return { result: rateLimitUnavailableResult(auth.userId, bucket) }; } return { userId: auth.userId }; } @@ -150,8 +150,14 @@ function rateLimitResult( }; } -function rateLimitUnavailableResult(): CallToolResult { - log.warn("rate limit unavailable; rejecting request"); +function rateLimitUnavailableResult( + userId: string, + bucket: { name: string } +): CallToolResult { + log.warn("rate limit unavailable; rejecting request", { + bucket: bucket.name, + userId, + }); return { content: [ { diff --git a/lib/collections/link-reachability.ts b/lib/collections/link-reachability.ts index 248c9456..d7bc8985 100644 --- a/lib/collections/link-reachability.ts +++ b/lib/collections/link-reachability.ts @@ -113,6 +113,7 @@ export async function consumeProbeBudget( if (!redis) { if (isRedisConfigured()) { log.warn("Link probe budget unavailable; refusing probes", { + amount, userId, }); return { allowed: false, retryAfterMs: PROBE_BUDGET_WINDOW_MS }; @@ -142,6 +143,7 @@ export async function consumeProbeBudget( } catch (error) { if (isRedisConfigured()) { log.warn("Link probe Redis budget failed; refusing probes", { + amount, error, userId, }); diff --git a/lib/integrations/mcp/rate-limit.ts b/lib/integrations/mcp/rate-limit.ts index b057b6ff..f1e4bae4 100644 --- a/lib/integrations/mcp/rate-limit.ts +++ b/lib/integrations/mcp/rate-limit.ts @@ -85,6 +85,7 @@ export async function checkMcpRateLimit( log.warn("MCP rate limit counter failed; failing closed", { bucket: bucket.name, error, + userId, }); return { status: "unavailable" }; }