handleAutomaticTaskPolling ignores AbortSignal; cancelled requests poll indefinitely
Los mantenedores suelen responder en 4 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 74/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
Línea de trabajo
Comienza en packages/server/src/server/mcp.ts, en handleAutomaticTaskPolling, y compara su bucle de sondeo con la comprobación de la señal en taskManager.ts alrededor de la línea 856. Confirma que un ctx.mcpReq.signal abortado detiene el sondeo con el error de cancelación indicado, y verifica que el sondeo de tareas no canceladas siga llegando a completarse o fallar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Initial Checks
- Using the latest version of MCP TypeScript SDK
- Searched existing issues
Description
In packages/server/src/server/mcp.ts, handleAutomaticTaskPolling contains a while loop (lines 328-335) that polls a task store until completion. The loop never checks ctx.mcpReq.signal.aborted. If the client cancels the request, the poll loop continues consuming server resources indefinitely.
while (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled') {
await new Promise(resolve => setTimeout(resolve, pollInterval));
const updatedTask = await ctx.task.store.getTask(taskId);
// ...
}
The taskManager.ts implementation of the same pattern correctly checks the signal (line 856):
if (signal.aborted) {
resolver(new ProtocolError(ProtocolErrorCode.InternalError, 'Task cancelled or completed'));
break;
}
Impact
On multi-tenant servers, a single cancelled long-running tool leaks a polling loop per cancelled request. Over time this accumulates.
Suggested fix
while (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled') {
if (ctx.mcpReq.signal.aborted) {
throw new ProtocolError(ProtocolErrorCode.RequestCancelled, 'Request cancelled during task polling');
}
await new Promise(resolve => setTimeout(resolve, pollInterval));
// ...
}
- Lenguaje dominante
- TypeScript
- Estrellas
- 13.5k
- Forks
- 2.2k
- Merge medio
- 4 d 11 min
- PR fusionados (30 d)
- 21
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de modelcontextprotocol/typescript-sdk
-
v1 v2
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
modelcontextprotocol/typescript-sdk#2867 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
v1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
modelcontextprotocol/typescript-sdk#2854 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
v1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
modelcontextprotocol/typescript-sdk#2843 · 3 comentarios ·
Los mantenedores suelen responder en 4 días
-
Auth metadata discovery: fallback URL built on resource host instead of authorization-server hostAbiertov1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
modelcontextprotocol/typescript-sdk#2784 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
v1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
modelcontextprotocol/typescript-sdk#2783 · 1 comentario ·
Los mantenedores suelen responder en 4 días
Todos los issues de modelcontextprotocol/typescript-sdk
Issues similares
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
opensearch-project/security-dashboards-plugin#2545 ·
Los mantenedores suelen responder en 1 día
-
Add: Dream TR SDAbiertocheck:passed streams:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
doctor integrity sample scans soft-deleted pages on Postgres (batch path has no deleted_at filter)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
SocialGouv/egapro#4672 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
area:agents area:tui bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
anthropics/claude-code#98358 ·
Los mantenedores suelen responder en 1 día