From 726976a99f9047380adade068b0f62fff32db528 Mon Sep 17 00:00:00 2001 From: Chris Guidry Date: Fri, 9 Jan 2026 13:28:52 -0500 Subject: [PATCH] Add verbose Redis error logging with full traceback When Redis operations fail, log the full traceback to help diagnose ACL and permission issues in production environments. Co-Authored-By: Claude Opus 4.5 --- src/fastmcp/server/tasks/handlers.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/fastmcp/server/tasks/handlers.py b/src/fastmcp/server/tasks/handlers.py index 48356be79..00a65df27 100644 --- a/src/fastmcp/server/tasks/handlers.py +++ b/src/fastmcp/server/tasks/handlers.py @@ -101,9 +101,23 @@ async def handle_tool_as_task( ttl_seconds = int( docket.execution_ttl.total_seconds() + TASK_MAPPING_TTL_BUFFER_SECONDS ) - async with docket.redis() as redis: - await redis.set(task_meta_key, task_key, ex=ttl_seconds) - await redis.set(created_at_key, created_at, ex=ttl_seconds) + _logger.info( + f"[{instance_id}] About to write to Redis: task_meta_key={task_meta_key}, " + f"created_at_key={created_at_key}, ttl={ttl_seconds}" + ) + try: + async with docket.redis() as redis: + await redis.set(task_meta_key, task_key, ex=ttl_seconds) + await redis.set(created_at_key, created_at, ex=ttl_seconds) + _logger.info(f"[{instance_id}] Redis write successful") + except Exception as e: + import traceback + + _logger.error( + f"[{instance_id}] Redis write FAILED: {type(e).__name__}: {e}\n" + f"Traceback:\n{traceback.format_exc()}" + ) + raise # Send notifications/tasks/created per SEP-1686 (mandatory) # Send BEFORE queuing to avoid race where task completes before notification