🤖 Concurrency primitive and fileLock hazards found by the formal models (#5309, #5319 follow-ups)
Los mantenedores suelen responder en 1 día
@ThomasK33 ya está trabajando en esto.
Desde el 30/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Tracking issue for concurrency-primitive hazards found while modeling them (formal/primitives/, formal/filelock/). None of these was fixed in #5309 or #5319.
AsyncSemaphore.releaseSlot()is still public (from #5309).src/node/utils/concurrency/asyncSemaphore.tsexposes it, so a caller can release a slot it never acquired and break the FIFO hand-off. Make it private, or route all releases through the returned lock handle.MutexMapis not reentrant (src/node/utils/concurrency/mutexMap.ts). A nestedwithLockon the same key deadlocks. At minimum, say this in the doc comment. Optionally, assert on nested use in tests.KeyedFifoLock.acquirewith a far deadline times out at once (src/node/services/workflows/keyedFifoLock.ts). The timer delay isdeadline - Date.now(). Node clamps delays above 2^31-1 ms (about 24.8 days) to 1 ms, so such a waiter resolvesnullalmost immediately. Clamp the delay, or re-arm the timer in chunks.- fileLock swallows unlink failures for
.stale-*graveyard files (from #5319). Failed cleanups are silent, so graveyard files can pile up unnoticed. Log them at debug level. - fileLock reclamation fails closed at
MAX_RECLAIM_DEPTH= 8 (src/node/utils/concurrency/fileLock.ts). This is intended, but the user-facing fix is "remove it manually". Check whether this depth is reachable in practice, and give the manual-recovery step a documented home.
Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $37.39
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.1k
- Forks
- 139
- Merge medio
- 3 h 35 min
- PR fusionados (30 d)
- 950
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin 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 coder/xum
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
coder/xum#7733 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
appandflow/stim#5258 ·
Los mantenedores suelen responder en 1 día
-
area/docs framework/hugo help wanted language/markdown
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
lingdojo/kana-dojo#33660 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
drizzle-team/drizzle-orm#6639 ·
Los mantenedores suelen responder en 4 días
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100