xorq stat snapshot cache has no eviction and caches the batch aggregate as one entry — klass reloads can't be surgical
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Start by reading the cache key logic at xorq_stat_pipeline.py:197 and the batch aggregation at xorq_stat_pipeline.py:405. Then trace where cache_storage_path snapshots are loaded and written, and check the existing tests for cache behavior. Done means snapshots can be evicted without the reload wipe and, if pursued, individual stat aggregates can be reused independently.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The xorq stat snapshot cache has no eviction, and its batch aggregate is a single cache entry. The only thing keeping the cache bounded today is tallyman wiping the whole entry directory on every klass reload (buckaroo-data/tallyman#177), which is unnecessary for correctness: snapshots are keyed on a content hash of each query (xorq_stat_pipeline.py:197), so klass changes never produce stale hits.
Removing that wipe exposes two gaps:
- Snapshots for removed or edited stats are orphaned and accumulate under
cache_storage_pathindefinitely. - All batch stats go through one
table.aggregate(agg_exprs)query (xorq_stat_pipeline.py:405), so adding or editing any one aggregate stat changes that query's key and re-runs every aggregate.
Impact
Without the wipe, disk use grows with every stat edit. With it, every hot-reload recomputes everything cold. Neither is what the summary-stat edit loop needs.
Suggested fix
- Eviction: a size cap or oldest-first pass over the snapshot directory (by mtime, touched on hit), run at load time rather than on reload.
- Optional, if the batch aggregate turns out to dominate on wide tables: cache the batch per stat function. On a run, look up each function's snapshot, aggregate only the missing ones in one query, write one snapshot per function, and merge. Costs more small files.
Context
Identified while reviewing the fix for #957. Tallyman side: buckaroo-data/tallyman#177.
- Lenguaje dominante
- Python
- Estrellas
- 685
- Forks
- 17
- Merge medio
- 23 h 34 min
- PR fusionados (30 d)
- 24
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 buckaroo-data/buckaroo
-
Histograms JS
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
buckaroo-data/buckaroo#1089 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Histograms
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
buckaroo-data/buckaroo#1087 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Histograms
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
buckaroo-data/buckaroo#1086 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Histograms
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
buckaroo-data/buckaroo#1083 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Histograms
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
buckaroo-data/buckaroo#1082 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de buckaroo-data/buckaroo
Issues similares
-
The changelog workflow excludes otelbot but not dependabot, so every Dependabot pull request fails the changelog checkPosiblemente ocupada @ocelotl la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
open-telemetry/opentelemetry-python#5825 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cuga-project/cuga-agent#1020 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
microsoft/playwright#43640 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
stac-utils/stac-fastapi-elasticsearch-opensearch#965 ·
Los mantenedores suelen responder en 2 días
-
from-review-extraction library privacy python severity:suggested
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
LearningCircuit/local-deep-research#7951 ·
Los mantenedores suelen responder en 2 días