Volver a la wiki

Incidente: la rotación de agent.log nunca funcionó en el binario compilado (WinError 32)

Cuándo

Detectado y arreglado el 01-09-2026 (v1.97.2 del SaaS, Local Agent 2.26.2, PR #485, commit e5027651). El defecto llevaba activo desde la propia versión que introdujo la rotación, Agent 2.24.0 (28-08-2026, [[feature—monitoring—agente-2-24-0-task-270]]) — cuatro días en los que la rotación no funcionó ni una sola vez en el binario real, aunque los tests locales pasaban.

Síntomas visibles

En la máquina de Edu, agent.log medía 322 MB con 91 fallos de rotación en las últimas 3000 líneas. El propio RotatingFileHandler escribía el error de su fallo en el mismo fichero que no podía rotar, así que el síntoma quedaba enterrado dentro del log que crecía sin control (~6-7 MB/día). En una máquina cliente sin supervisión, ese crecimiento no tiene techo.

Causa raíz

El .exe del Local Agent se compila con PyInstaller --noconsole (ver [[concept—general—como-esta-construido-el-local-agent-que-dependenci]]), así que sys.stdout/sys.stderr son None al arrancar. setup_logging() cubría ese caso abriendo dos handles persistentes de escritura sobre el mismo agent.log que el RotatingFileHandler intentaba rotar. Windows rechaza renombrar un fichero con handles abiertos (WinError 32), así que la rotación de 2.24.0 fallaba en TODOS los intentos, siempre, en cualquier máquina cliente (el .exe siempre va sin consola). Los tests que sí pasaban corrían con Python normal, donde sys.stdout no es None y esa rama nunca se ejercitaba.

Fix aplicado

Commit e5027651 (PR #485, v1.97.2 / Agent 2.26.2):

Lecciones

Preventivos futuros

Véase también

Subir