[operation-graph] WatchLoop.runIPCAsync never exits when the IPC host disconnects, so heft run-watch outlives its host
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript
- Área
- devtools
Línea de trabajo
Encuentra WatchLoop.runIPCAsync en el paquete @rushstack/operation-graph y lee el procesamiento existente de mensajes IPC. Reproduce el caso notificado desconectando o terminando el host y, a continuación, comprueba si las pruebas del bucle de observación cubren este caso. El trabajo estará terminado cuando el bucle finalice y Heft se cierre después de que se cierre el canal IPC, sin alterar el comportamiento existente del comando exit.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
🤖 Filed by GitHub Copilot acting for @namankanakiya (light review only).
Package: @rushstack/operation-graph 0.7.4 (via @rushstack/heft 1.3.2). Linux, Node 22.
Repro: in any Heft project, create host.js:
const cp = require('child_process').fork(
require.resolve('@rushstack/heft/bin/heft'),
['run-watch', '--only', 'build'],
{ stdio: ['inherit', 'inherit', 'inherit', 'ipc'] }
);
setTimeout(() => process.kill(process.pid, 'SIGKILL'), 30000);
Run node host.js.
Observed: after the host dies, heft run-watch keeps running forever with ppid 1. Inside it, process.connected === false and there are no 'disconnect' listeners; its file watchers keep the event loop alive, so it holds its memory indefinitely. The same happens after cp.disconnect(). In a large monorepo where a Rush plugin hosts many such IPC watchers, a crashed or OOM-killed host left orphaned watcher groups totaling ~19-33 GB RSS.
Expected: when the IPC host's channel closes, the watch loop ends and heft exits, the same as on the host's exit command.
Suggested fix: in WatchLoop.runIPCAsync, add host.once('disconnect', () => resolve()) (or reject with an error) next to the 'message' handler, so a lost host is treated like the exit command.
Happy to test a candidate fix.
- Lenguaje dominante
- TypeScript
- Estrellas
- 6.5k
- Forks
- 710
- Merge medio
- 1 d 13 h
- PR fusionados (30 d)
- 45
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin 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 microsoft/rushstack
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
[rush] Upgrade the pnpm-sync-lib dependency to 0.3.5.Posiblemente ocupada @martinnaj la tomó hace 8 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/rushstack#5971 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
microsoft/rushstack#5902 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
microsoft/rushstack#5839 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
microsoft/rushstack#5683 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de microsoft/rushstack
Issues similares
-
bug priority:low ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Automattic/data-liberation-agent#685 ·
Los mantenedores suelen responder en 1 día
-
Business
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
txn2/mcp-data-platform#2063 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 77/100
Crosstalk-Solutions/project-nomad#1427 ·
Los mantenedores suelen responder en 2 días