ops: scripts/safe-restart.sh — рестарт демона лестницы только в тихое окно (без убийства живых LLM-воркеров; закрывает инцидент из e-260929234911)
This commit is contained in:
parent
76aa204f2b
commit
5935ece4ec
1 changed files with 39 additions and 0 deletions
39
scripts/safe-restart.sh
Executable file
39
scripts/safe-restart.sh
Executable file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# t-260929210755 / закрытие эскалации e-260929234911: рестарт демона лестницы
|
||||||
|
# БЕЗ убийства живых LLM-воркеров (рестарт при живом воркере = застрявшая
|
||||||
|
# running-задача, тот самый инцидент). Ждём «тихого окна» — нет процессов
|
||||||
|
# harness/_llm_worker.py, с подтверждением 3с, потом systemctl restart.
|
||||||
|
#
|
||||||
|
# Гарантия на гонку «проверил → стартовал новый воркер → рестарт»: orphan-requeue
|
||||||
|
# (commit 42743f9) возвращает running-задачи с мёртвым воркером в очередь —
|
||||||
|
# даже худший случай не теряет работу, просто повторит её.
|
||||||
|
#
|
||||||
|
# Использование: scripts/safe-restart.sh [max_wait_sec] (по умолчанию 3600)
|
||||||
|
set -u
|
||||||
|
MAX_WAIT="${1:-3600}"
|
||||||
|
LOG="${SIMBIOT_RESTART_LOG:-/tmp/simbiot-safe-restart.log}"
|
||||||
|
SERVICE="${SIMBIOT_SERVICE:-simbiot-harness}"
|
||||||
|
# якорь в конец cmdline: не матчит sh -c команды, которые лишь УПОМИНАют воркера
|
||||||
|
PAT='/harness/_llm_worker\.py$'
|
||||||
|
deadline=$(( $(date +%s) + MAX_WAIT ))
|
||||||
|
echo "[$(date -u '+%F %T')] safe-restart: ждём тихое окно (макс ${MAX_WAIT}s), сервис ${SERVICE}" >> "$LOG"
|
||||||
|
while :; do
|
||||||
|
if ! pgrep -f "$PAT" > /dev/null; then
|
||||||
|
sleep 3 # окно должно быть устойчивым
|
||||||
|
if ! pgrep -f "$PAT" > /dev/null; then
|
||||||
|
echo "[$(date -u '+%F %T')] safe-restart: тихое окно поймано" >> "$LOG"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$(date +%s)" -ge "$deadline" ]; then
|
||||||
|
echo "[$(date -u '+%F %T')] safe-restart: тихого окна нет ${MAX_WAIT}s — рестарт всё равно (orphan-requeue подхватит)" >> "$LOG"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
if systemctl restart "$SERVICE"; then
|
||||||
|
echo "[$(date -u '+%F %T')] safe-restart: демон ${SERVICE} перезапущен" >> "$LOG"
|
||||||
|
else
|
||||||
|
echo "[$(date -u '+%F %T')] safe-restart: FAIL — systemctl restart ${SERVICE}" >> "$LOG"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
Loading…
Reference in a new issue