[Feature] Metro cache cleanup uses blocking and unsafe recursive deletion
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript, vscode
Línea de trabajo
Encuentra el comando “Clean [31m&[0m Restart Packager” y su método personalizado deleteDirectory() en el código fuente de la extensión. Lee primero el flujo de limpieza y el manejo de errores; comprueba que la limpieza termine antes de que se reinicie el packager y que se gestione la ausencia de una ruta de caché. El issue no indica nombres de archivos ni de pruebas, así que localiza el comando relevante y las pruebas en el repositorio.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The “Clean & Restart Packager” command currently deletes the Metro cache using a custom recursive deleteDirectory() method.
This implementation has several issues:
- It uses synchronous filesystem APIs inside an asynchronous workflow, potentially blocking the extension host when the cache contains many files.
statSync()follows symbolic links, so recursive traversal may delete files in directories outside the Metro cache.- Separate existence checks and deletion operations introduce time-of-check/time-of-use (TOCTOU) races.
- It duplicates functionality already provided by Node.js.
Proposed solution
Replace the existence check and custom recursive deletion with:
await fs.promises.rm(metroCachePath, {
recursive: true,
force: true,
});
Remove the unused deleteDirectory() method and preserve the existing error handling.
Expected behavior
- Metro cache cleanup does not use synchronous filesystem APIs.
- Symbolic links inside the cache are removed without deleting their target contents.
- A missing cache directory does not cause cleanup to fail.
- The packager restarts after cleanup completes.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.7k
- Forks
- 298
- Merge medio
- 1 d 4 h
- PR fusionados (30 d)
- 24
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 microsoft/vscode-react-native
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/vscode-react-native#3011 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/vscode-react-native#3008 ·
Los mantenedores suelen responder en 1 día
-
[Feature] Avoid duplicate error notificationsPosiblemente ocupada @erenbati la tomó hace 11 días. Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
microsoft/vscode-react-native#2963 ·
Los mantenedores suelen responder en 1 día
-
[Feature] Stop Expo Go installation when Quick Pick is canceledPosiblemente ocupada @erenbati la tomó hace 26 días. Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
microsoft/vscode-react-native#2959 ·
Los mantenedores suelen responder en 1 día
-
enhancement follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
microsoft/vscode-react-native#2951 ·
Los mantenedores suelen responder en 1 día
Todos los issues de microsoft/vscode-react-native
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
maniator/verticopolis#1303 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
components-web-app/docs#297 ·
-
listFeatures/getFeatureExamples never return Kotlin examples for Android or server Kotlin SDKsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
appwrite/mcp-for-docs#23 · 1 comentario ·
-
`@vanilla-extract/turbopack-plugin`: "getImageSize is not a function" with Next.js 16.4.x when a `.css.ts` file imports an imagePosiblemente ocupada @aevarOrigo la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
vanilla-extract-css/vanilla-extract#1799 · 1 comentario ·
-
native
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
prime-radiant-inc/evener#4839 ·
Los mantenedores suelen responder en 1 día