Test-products retention is unbounded in practice (100 bundles / 3 days, no config knob) — can fill a disk
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- tooling
Hướng nghiên cứu
Bắt đầu bằng cách đọc utils/test-products-lifecycle.js, bao gồm pruneManagedTestProductsDirectory cùng các hằng số TEST_PRODUCTS_MAX_AGE_MS và TEST_PRODUCTS_MAX_COUNT của nó, sau đó lần theo hàm gọi trong utils/workspace-filesystem-lifecycle.js. Xác định cách các thiết lập lưu giữ nên được cung cấp và các giới hạn về tổng dung lượng hoặc số lượng/tuổi nên tương tác với nhau như thế nào; được xem là hoàn thành khi việc dọn dẹp có thể cấu hình ngăn chặn kịch bản tăng dung lượng đĩa đã được tài liệu hóa và hành vi vòng đời hiện có vẫn được bao phủ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Version: 2.7.0
Problem
Each test_sim / test_* run stages a full .xctestproducts bundle (a Binaries/ copy of the built test products) under ~/Library/Developer/XcodeBuildMCP/workspaces/<workspace>/test-products/. In one of the repos I work on, each bundle is ~6.6 GB.
pruneManagedTestProductsDirectory only removes bundles that are either:
- older than 3 days (
TEST_PRODUCTS_MAX_AGE_MS), or - in excess of 100 retained (
TEST_PRODUCTS_MAX_COUNT),
and the sweep only runs while the server is active (1h cooldown). At ~6.6 GB/bundle that permits roughly 660 GB before count-based GC ever triggers. In practice, 20 runs over two days silently consumed 66 GB and contributed to filling my disk.
Root cause
These limits are hardcoded in utils/test-products-lifecycle.js:
const TEST_PRODUCTS_MAX_AGE_MS = 3 * 24 * 60 * 60 * 1e3;
const TEST_PRODUCTS_MAX_COUNT = 100;
and the caller in utils/workspace-filesystem-lifecycle.js only ever passes maxAgeMs (the log max-age, also 3 days) — never maxCount. There is no env/config surface to tune count, age, or a total-size cap, unlike XCODEBUILDMCP_DERIVED_DATA_PATH for derived data.
Request
Expose retention controls, e.g.:
XCODEBUILDMCP_TEST_PRODUCTS_MAX_COUNTXCODEBUILDMCP_TEST_PRODUCTS_MAX_AGEXCODEBUILDMCP_TEST_PRODUCTS_MAX_TOTAL_BYTES
and/or lower the defaults given bundles are multi-GB (e.g. keep only the newest N per workspace). A total-size budget would be the most robust guard against filling the disk between the age/count thresholds.
- Ngôn ngữ chính
- TypeScript
- Star
- 6.4k
- Fork
- 320
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 getsentry/XcodeBuildMCP
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
getsentry/XcodeBuildMCP#520 ·
-
Warden weekly sweep Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
getsentry/XcodeBuildMCP#495 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
getsentry/XcodeBuildMCP#537 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
getsentry/XcodeBuildMCP#535 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 28/100
getsentry/XcodeBuildMCP#534 ·
Tất cả issue của getsentry/XcodeBuildMCP
Issue tương tự
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
Mend: dependency security vulnerability untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100