mirror of
https://github.com/alexandrev/xslt-lab.git
synced 2026-09-18 19:43:16 +00:00
Los logs de error llegan corruptos a Loki: el 92% de las líneas se pierden por superar el corte de 16 KB de containerd #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pedido por el usuario el 18-sep-2026 (punto 3 de la revisión de situación).
Qué pasa.
errLogFieldMax = 48_000(backend/src/main.go:117) limita cada campo a 48.000 caracteres antes de base64, que infla ×1,33; y se emiten dos campos (xslt_b64yparams_b64) → líneas de hasta 128.293 caracteres. containerd trocea a 16 KB y promtail no reensambla.Medido: en
kubectl logsel 96% de las líneas son JSON válido; ya en Loki solo el 8,4%. La etiquetaversionse pierde en el 33% de los eventos yxslt_b64/repro_urlquedan inservibles justo para los stylesheets grandes, que son los que hay que depurar.Impacto directo: al investigar por qué XSLT 3.0 pasó de 6% a 47% de error no se pudo atribuir a usuarios porque el log no lleva IP y Loki descartaba el 92% de las líneas. Cualquier agregación por versión hecha sobre Loki no es fiable.
Arreglo previsto: bajar el cap por campo a ~4.000 caracteres para que la línea completa quepa holgadamente bajo 16 KB, y añadir la IP del cliente al registro de error.
Implementado en
086d984y desplegado.errLogFieldMaxbaja de 48.000 a 4.000 por campo yerrLogReproURLMaxde 30.000 a 6.000, dimensionados contra el límite que de verdad corta (los 16 KB de containerd) y no contra un número inventado. Encima hay un presupuesto de línea (errLogLineMax = 14.000) que, si aun así se pasa, va descartando los campos pesados —params_b64, luegoxslt_b64, yrepro_urlel último porque lleva los dos documentos— y deja constancia en un campodroppedpara que el hueco se vea en vez de ser silencioso. Se añade tambiénclient_ip, que es lo que faltaba para poder decir si una tasa de error la produce el producto o un solo usuario.Dos tests nuevos cubren los dos caminos: el stylesheet de 1 MB (los caps bastan) y el tamaño intermedio que sí dispara el descarte.
Verificado en producción con un stylesheet de 20 KB que falla: la línea sale de 5.700 bytes, parsea como JSON, conserva
class,error_code,versionyclient_ip, y en Loki el 100% de las líneas de la ventana son parseables frente al 8,4% de antes.