Test-products retention is unbounded in practice (100 bundles / 3 days, no config knob) — can fill a disk
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- tooling
Línea de trabajo
Empieza leyendo utils/test-products-lifecycle.js, incluidos pruneManagedTestProductsDirectory y sus constantes TEST_PRODUCTS_MAX_AGE_MS y TEST_PRODUCTS_MAX_COUNT, y luego sigue el llamador en utils/workspace-filesystem-lifecycle.js. Determina cómo deben exponerse las opciones de retención y cómo deben interactuar los límites de tamaño total o de cantidad/antigüedad; se considera terminado cuando la limpieza configurable evita el escenario documentado de crecimiento del disco y el comportamiento existente del ciclo de vida sigue estando cubierto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- TypeScript
- Estrellas
- 6.4k
- Forks
- 320
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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 getsentry/XcodeBuildMCP
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
getsentry/XcodeBuildMCP#520 ·
-
Warden weekly sweep Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
getsentry/XcodeBuildMCP#495 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
getsentry/XcodeBuildMCP#537 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
getsentry/XcodeBuildMCP#535 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 28/100
getsentry/XcodeBuildMCP#534 ·
Todos los issues de getsentry/XcodeBuildMCP
Issues similares
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100