diff --git a/scripts/farm/deadman.sh b/scripts/farm/deadman.sh index 34967d7a..4c4e2504 100644 --- a/scripts/farm/deadman.sh +++ b/scripts/farm/deadman.sh @@ -108,6 +108,14 @@ hay_trabajo() { # (incidente 2026-07-23, 2ª vez). El loop construyendo YA se ve por su `hammer build` hijo. pgrep -f 'release/hammer.* build ' >/dev/null 2>&1 && { echo "hammer build en vuelo"; return 0; } pgrep -f 'campana-deuda' >/dev/null 2>&1 && { echo "campaña deliberada en vuelo"; return 0; } + # UNA TRANSFERENCIA TAMBIÉN ES TRABAJO (2026-08-09). Poblar el volumen con el store del hub son + # horas de rsync durante las cuales no corre ningún `hammer build` ⇒ el worker acumulaba ticks y + # se borraba A SÍ MISMO a mitad de la copia. El volumen sobrevive, pero la transferencia muere y + # hay que reanudarla a mano; con un enlace lento eso puede no converger nunca. + # `pgrep -x` (nombre EXACTO del proceso), no `pgrep -f`: `-f` mira la línea de órdenes completa y + # se auto-matchea con el propio dead-man si su ruta contiene la cadena. Ese error ya nos hizo + # informar cuatro veces procesos «vivos» que estaban muertos. + pgrep -x rsync >/dev/null 2>&1 && { echo "transferencia rsync en vuelo"; return 0; } if [ -f "$HEARTBEAT" ]; then edad=$(( $(date +%s) - $(stat -c %Y "$HEARTBEAT" 2>/dev/null || echo 0) )) [ "$edad" -lt "$HEARTBEAT_MAX_AGE" ] && { echo "heartbeat fresco (${edad}s)"; return 0; }