fix(apple-runner): fence prep spawns after teardown or last-waiter cancellation
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript
- Área
- mobile-dev, testing
Línea de trabajo
Start by reading PR #3193 and trace the runner start, preparation-spawn, teardown, and waiter-cancellation paths it changed; the issue does not name source files or tests. Then identify where the session lock is held during close and how retries are admitted. Done means the specified cancellation controls and live close-during-build route show no respawn, close completes, owned children are cleaned up, and the focused tests and affected gate pass.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Purpose
A runner start must stop creating preparation processes after its execution host is torn down or its last interested waiter cancels. Stopping the currently registered children once is insufficient.
PR #3193 measured this during close with a cold build: close killed the first build-for-testing before obtaining the runner session lock, but the detached prewarm health retry spawned a second build while close waited for that lock. Close reached its timeout; the second build remained until daemon stop. Original evidence: https://github.com/callstack/agent-device/pull/3193#issuecomment-5981188182. This observation is at b6cdd3c49, not a fresh reproduction on main.
Required behavior
- The in-flight runner start owns whether further preparation is admitted. Device teardown closes that admission before stopping current prep children or waiting for the session lock.
- Canceling the final interested waiter closes admission for that start. Canceling one waiter must preserve work still needed by another.
- Check admission at every preparation spawn, including retries after a killed build. A check only when registering an already spawned child is too late.
- A later independent open may create a fresh start; a retired start cannot resume and publish a runner into it.
- Prefer one start-owned cancellation/admission mechanism. Reassess whether the request-owner prep filter introduced by #3193 remains necessary once the reachable callers and waiter semantics are covered.
Done when
- A control holds the runner session lock during a cold build, begins non-retained close, and attempts a retry after the first child is stopped. No second prep child is spawned; close settles without waiting for a replacement build.
- Controls cover cancellation before the first prep spawn, last-waiter cancellation, and another still-interested waiter.
- Repeat the live close-during-build route with evidence of no respawn, completed close, and cleanup. Retain the original evidence attribution.
- Focused tests and the affected gate pass; process signaling remains scoped to owned children.
Depends on #3193. This is start admission, not another host-wide timeout sweep or a shorter join timeout.
- Lenguaje dominante
- TypeScript
- Estrellas
- 4.8k
- Forks
- 315
- Merge medio
- 11 h 37 min
- PR fusionados (30 d)
- 556
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 callstack/agent-device
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
callstack/agent-device#1869 ·
Los mantenedores suelen responder en 1 día
-
iOS: type/fill still reads its pre-focus element after the focus tap, ending the runner sessionAbiertobug needs-triage
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
callstack/agent-device#3238 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
callstack/agent-device#3229 ·
Los mantenedores suelen responder en 1 día
-
Explicit macOS surface is lost from recorded actions and replay scriptsPosiblemente ocupada @janicduplessis la tomó hace 1 día. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
callstack/agent-device#3216 ·
Los mantenedores suelen responder en 1 día
-
macOS native app backend: follow-ups (guarantees, evidence, persistent helper, session backend)Abiertoenhancement needs-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
callstack/agent-device#3213 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstack/agent-device
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
Signals (Failure Detector): a tool call and its own execution are reported as a repeated callAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
platformatic/mcp#208 ·
Los mantenedores suelen responder en 1 día
-
🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
margelo/react-native-vision-camera#4211 ·
Los mantenedores suelen responder en 4 días