Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Test-products retention is unbounded in practice (100 bundles / 3 days, no config knob) — can fill a disk

Abierto
#524 1 comentario 2 reacciones 0 asignados Ver en GitHub

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_COUNT
  • XCODEBUILDMCP_TEST_PRODUCTS_MAX_AGE
  • XCODEBUILDMCP_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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de getsentry/XcodeBuildMCP

Todos los issues de getsentry/XcodeBuildMCP

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.