/saveProject leads to "resource busy (file is locked)" in logs
- Lenguaje dominante
- Haskell
- Estrellas
- 1.3k
- Forks
- 201
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
I'm seeing occasional `/saveProject` requests in logs that fail with this exception:
A web handler threw an exception. Details:
data/haskell/projects/123456789123456789/SABC123ABC123ABC123.cw: openBinaryFile: resource busy (file is locked)
A hypothesis is that these can occur when a client sends two save commands at nearly the same time, in which case this could be fixed on the client by tracking when a save is in-progress, and refusing to start a new one until it either finishes or times out. (Timeout would be crucial, since we don't want to lock a student into a situation where they can't retry a save.)
Guía de contribución
Línea de trabajo
Comienza siguiendo el handler web /saveProject y reproduciendo dos solicitudes de guardado casi simultáneas que produzcan el error de bloqueo de openBinaryFile indicado. El issue no menciona archivos ni tests; se considera terminado cuando se evita que los guardados solapados hagan que las solicitudes fallen por el bloqueo del archivo, manteniendo al mismo tiempo una ruta de reintento si un guardado agota el tiempo de espera.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- haskell
- Área
- api, backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100