Test-products retention is unbounded in practice (100 bundles / 3 days, no config knob) — can fill a disk
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- tooling
Direzione di ricerca
Inizia leggendo utils/test-products-lifecycle.js, inclusi pruneManagedTestProductsDirectory e le relative costanti TEST_PRODUCTS_MAX_AGE_MS e TEST_PRODUCTS_MAX_COUNT, quindi traccia il chiamante in utils/workspace-filesystem-lifecycle.js. Determina come debbano essere esposte le impostazioni di conservazione e come debbano interagire i limiti di dimensione totale o di quantità/anzianità; il lavoro è completato quando la pulizia configurabile impedisce lo scenario documentato di crescita del disco e il comportamento esistente del ciclo di vita continua a essere coperto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- TypeScript
- Stelle
- 6.4k
- Fork
- 320
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di getsentry/XcodeBuildMCP
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
getsentry/XcodeBuildMCP#520 ·
-
Warden weekly sweep Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
getsentry/XcodeBuildMCP#495 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
getsentry/XcodeBuildMCP#537 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
getsentry/XcodeBuildMCP#535 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
getsentry/XcodeBuildMCP#534 ·
Tutte le issue di getsentry/XcodeBuildMCP
Issue simili
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Mend: dependency security vulnerability untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100