granja: el reaper dropea de .fleet los workers que ya no existen en hcloud
Sin esto un server borrado se quedaba en .fleet para siempre (describe falla ⇒ 'sin label' ⇒ nunca se dropeaba). Ahora si no existe en hcloud, se saca. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +5 −0
diff --git a/scripts/farm/cosecha-cron.sh b/scripts/farm/cosecha-cron.sh
index 16a1a95f..f84f61f1 100755
--- a/scripts/farm/cosecha-cron.sh
+++ b/scripts/farm/cosecha-cron.sh
@@ -91,6 +91,11 @@ if [ -s "$FLEET" ] && command -v hcloud >/dev/null 2>&1; then
while read -r name ip; do
[ -n "${name:-}" ] || continue
strike_f="$ROOT/work/.reaper/$name"
+ # ¿el server siquiera existe? Si ya no está en hcloud (borrado a mano o por un ciclo previo),
+ # NO cuesta € y no debe quedar en .fleet para siempre. Se dropea (no entra a `sobreviven`).
+ if ! hcloud server describe "$name" -o format='{{.Name}}' >/dev/null 2>&1; then
+ echo "==> reaper: $name ya no existe en hcloud ⇒ lo saco de .fleet"; rm -f "$strike_f"; continue
+ fi
if $SSH root@"$ip" 'pgrep -f "hammer build|campana-deuda|farm-worker-loop" >/dev/null 2>&1'; then
echo 0 > "$strike_f"; sobreviven="${sobreviven}${name} ${ip}
"; continue