[Feature] Metro cache cleanup uses blocking and unsafe recursive deletion
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 78/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- node.js, typescript, vscode
Hướng nghiên cứu
Tìm lệnh “Clean [31m&[0m Restart Packager” và phương thức tùy chỉnh deleteDirectory() trong mã nguồn của extension. Trước tiên, hãy đọc luồng dọn dẹp và cách xử lý lỗi; xác minh việc dọn dẹp hoàn tất trước khi packager khởi động lại và trường hợp đường dẫn cache không tồn tại được xử lý. Issue không nêu tên tệp hay bài kiểm thử, vì vậy hãy tìm lệnh liên quan và các bài kiểm thử trong repository.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- TypeScript
- Star
- 2.7k
- Fork
- 298
- Merge trung bình
- 1 ngày 3 giờ
- Pull request đã merge (30 ngày)
- 26
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/vscode-react-native
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
microsoft/vscode-react-native#3011 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
microsoft/vscode-react-native#3008 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] Avoid duplicate error notificationsCó thể đã có người làm @erenbati đã nhận 11 ngày trước. Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
microsoft/vscode-react-native#2963 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] Stop Expo Go installation when Quick Pick is canceledCó thể đã có người làm @erenbati đã nhận 26 ngày trước. Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
microsoft/vscode-react-native#2959 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement follow-up
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
microsoft/vscode-react-native#2951 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của microsoft/vscode-react-native
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Automattic/data-liberation-agent#953 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
README に GitHub の組織のバッジを足すĐang mởdocumentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
funmary-app/funmary#399 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:curator enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
CassioDalla/Scrinalia#150 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
status: needs-triage v1-bug-bash
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
a2ui-project/a2ui#3533 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
backend enhancement priority:P3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
geolens-io/geolens#3310 ·
Maintainer thường phản hồi trong vòng 1 ngày