Temp dataRootDir leaked on abnormal exit or startup failure
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 58/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- testing-qa
Línea de trabajo
Start in src/harperLifecycle.ts by reading teardownHarper(), trackHarperProcess, signalHarperTree(), and startHarper(). Trace how dataRootDir and the log dir are created and how exit, SIGINT, SIGTERM, timeout, and startup paths are handled. Done means catchable abnormal exits clean temporary directories and startup removes stale harper-integration-test-* trees without affecting live runs.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
teardownHarper() removes the run's temp dataRootDir, but only when it is actually reached — which is solely via each suite's own after/afterEach hook. On a failed, killed, or timed-out run the directory is left behind forever.
Mechanism (current main)
src/harperLifecycle.ts—teardownHarper()doesrm(dataRootDir, { recursive: true, force: true, maxRetries: 10 }). This is the only place the data root is removed.- The interrupt-safety net,
trackHarperProcess(registered onexit/SIGINT/SIGTERM), callssignalHarperTree()to kill processes. It never touchesdataRootDir. - On
SIGKILL, nothing runs at all.
So the cleanup path and the interrupt path are disjoint: every abnormal exit leaks a temp tree.
Observed impact
On a dev box this accumulated ~160 orphaned /tmp/harper-integration-test-* directories with no owning process, driving /tmp down to 3.1 G free, at which point runs failed with Disk quota exceeded.
Secondary consequence worth recording because it cost real time: on a machine where /tmp is a RAM-backed tmpfs, once it fills, every Bash call starts failing with a bare Exit code 1 while file tools keep working. Three separate agent sessions each burned their whole budget misdiagnosing that as something else. The disk symptom does not look like a disk symptom.
Relationship to the existing issues
This is a sibling of, but distinct from, the process/address leaks already tracked:
- #13 — loopback pool leaks addresses from runners killed mid-shard (dead-PID sweep only runs when the pool is full)
- #29 — detached Harper children orphaned permanently on SIGKILL/SIGHUP; reap guard covers only
exit/SIGINT/SIGTERM
Those two are about processes and bound ports, and they are genuinely hard (SIGKILL is uncatchable from the parent, hence #29's child-side parent-liveness watchdog proposal). This one is about filesystem state, is not covered by either, and is untouched by the recent SIGINT/SIGTERM hardening commits.
Suggested direction
Wire dataRootDir (and the log dir) removal into the same trackHarperProcess reaper that already handles the catchable signals, so a Ctrl-C or a timeout cleans up. For the SIGKILL case the parent can do nothing, so the practical complement is a stale-directory sweep at startup: on startHarper, remove harper-integration-test-* trees whose owning PID is gone — the same liveness test #13 already applies to pool addresses.
Found by the qa-explorer campaign.
— Claude Opus 5.5
- Lenguaje dominante
- TypeScript
- Estrellas
- 1
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
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 HarperFast/integration-testing
-
setupHarperWithFixture overwrites ctx.harper, dropping pre-set hostname (breaks multi-node add_node)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 74/100
-
A listener on all interfaces silently receives a test node's connections on macOS; the conflict canary cannot see itPosiblemente ocupada @dawsontoth la tomó hace 1 día. Abierto
HarperFast/integration-testing#38 · 1 comentario · 1 asignado ·
-
Detached Harper children are orphaned permanently when the runner dies by SIGKILL/SIGHUP — reap guard only covers exit/SIGINT/SIGTERMQuizá libre de nuevo @kriszyp la tomó hace 39 días y no hay ningún pull request abierto. Abierto
HarperFast/integration-testing#29 · 1 comentario · 1 asignado ·
Todos los issues de HarperFast/integration-testing
Issues similares
-
needs:triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
ai-discovered
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
jessepollak/home#1627 ·
Los mantenedores suelen responder en 1 día
-
agent-canvas bug llm priority:low ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
OpenHands/OpenHands#17806 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
radius-project/ai-extensions#923 ·
Los mantenedores suelen responder en 1 día