tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

dead-man: una transferencia rsync también es trabajo

Poblar el volumen con el store del hub son horas de rsync sin un solo `hammer build`. El dead-man
sólo miraba builds y latido ⇒ acumulaba ticks y borraba el worker A MITAD DE LA COPIA. El volumen
sobrevive (para eso está), pero la transferencia muere y hay que reanudarla a mano; sobre un enlace
lento eso puede no converger nunca.

`pgrep -x` y no `pgrep -f`: `-f` mira la línea de órdenes entera 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.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

68d8ae0aa9fa54bfda77a3c1698d25a247844c31 · por sergio · (hace 2 meses) · padre 36081cf1c · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +8 −0

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; }