Volver a la wiki

Incidente 24-08-2026 · el motor SNMP quedaba corrupto tras cuelgues seguidos — timeout duro + autocuración (Agente 2.21.2→2.21.3)

Cuándo

24-08-2026, mismo día que el incidente hermano del cortacircuitos mixto ([[incident—20260824—breaker-mixto-silencia-snmp-ccib]]) y su hotfix 2.21.1. Tras desplegar 2.21.2 (timeout duro de 20s por petición SNMP, commit d3bd04d7), el Agente Local del CCIB (123 puntos de acceso) mostró en /sentinel/status 90 cuelgues en 4,5 minutos, con snmp_engine_ready=True y cero muestras escritas.

Síntomas visibles

Causa raíz

pysnmp 7 comparte el transporte UDP entre todos los motores (engine) que viven en el mismo event loop del proceso. El Agente Local levanta más de un motor SNMP (el del Sentinel y el de deep discovery / lectura de puertos); cuando uno de ellos agota o cierra su transporte, deja al motor del Sentinel con el socket inservible, y todas sus peticiones futuras cuelgan hasta el timeout duro sin lanzar la excepción que el código sabía reconocer.

Fix aplicado

Commit ab41c02a (PR #432, v1.83.3 + Agente 2.21.3, task #263):

Lecciones

Este es el segundo hotfix del mismo día sobre el mismo subsistema. 2.21.2 (commit d3bd04d7) ya había puesto un timeout duro para que un cuelgue no bloqueara el lote entero (asyncio.gather esperando indefinidamente a todas las peticiones), pero no cubría el caso de que el motor SUBYACENTE quedara corrupto: entonces todas las peticiones futuras cuelgan igual, una tras otra, hasta agotar el timeout cada vez. Un timeout por petición resuelve “no te quedes esperando para siempre”; no resuelve “deja de intentarlo con una herramienta rota”. Hacían falta las dos capas: cortar cada intento individual (2.21.2) y detectar el patrón de fallos repetidos para actuar sobre la causa (2.21.3).

Preventivos futuros

Véase también

Subir