A staging folder that fails to delete is reused by the next update
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 75/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript, node.js
Línea de trabajo
Start with packages/builder-server/src/services/themeUpdateService.js, especially recoverInterruptedUpdate and the prepare failure, language-folder refusal, and post-swap cleanup paths around the referenced lines. Trace how the staging folder is removed and prepared, then inspect the relevant tests and add one that makes stage removal fail. Done means a run never prepares into a stage it did not create, and cleanup failure on the refusal path is reported.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
If a theme update can't delete its temporary folder, the next update can pick up stale files from it.
Every removal of .theme-update-stage/ swallows its error (themeUpdateService.js ~263 in recoverInterruptedUpdate, ~436/~442 in the prepare failure and the language-folder refusal, ~491/~502 after the swap). If one fails, the next run's ensureDir reuses the folder and fs.copy merges into it, so leftover staged files (an old collection folder, a stale asset) can be swapped into the project or cause a false refusal; the refusal also returns its 409 as if the stage were gone. Pre-existing pattern; found by reading the code, not reproduced.
Suggested: at the start of a run, remove the stage without swallowing the error and refuse with the usual "could not be prepared" message if it is still there; on the refusal path, report a cleanup failure instead of the clean 409.
Done when: A run never prepares into a stage it did not create, with a test that makes the stage removal fail.
Start: themeUpdateService.js. Source: 2026-10-18 Codex review of 29289f67..6344ab5c.
- Lenguaje dominante
- JavaScript
- Estrellas
- 162
- Forks
- 6
- Merge medio
- 12 h 55 min
- PR fusionados (30 d)
- 2
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 tsiger/widgetizer
-
question
Dificultad 1/5 1-3 horas Aptitud para principiantes 82/100
tsiger/widgetizer#194 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
tsiger/widgetizer#181 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
tsiger/widgetizer#175 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
tsiger/widgetizer#174 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
tsiger/widgetizer#173 ·
Todos los issues de tsiger/widgetizer
Issues similares
-
admission-deferred priority: medium status: ready work-class: scoped
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
melodic-software/claude-code-plugins#10887 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 91/100
Los mantenedores suelen responder en 1 día
-
Channel access dropdown: "Private" option is not translated into Japanese in Zulip Server 12Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
enhancement ui-dashboard
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día