Deploy-Robustheit: Selbst-Reset-Guard + TimeoutStopSec=5 (Lehren P1-Deploy 15.07.)
1) deploy.sh fuehrt sich nach dem git reset einmal frisch neu aus (exec-Guard, Env-Marke MC2_DEPLOY_REEXEC): der Reset ersetzt die laufende Datei, bash las einen alt/neu-Zeilen-Mix — beim P1-Deploy fielen so daemon-reload und der mc2-gateway-Start aus (Lucy 502, Heilung von Hand). 2) mc2-gateway.service TimeoutStopSec=5: uvicorn wartete beim Stop auf offene LLM-Streams (default 90 s SIGKILL-Fenster ohne Listener = 502-Fenster bei jedem Deploy-Restart, live gemessen 14:29->14:31). Stateless Proxy, Clients retrien — hart nach 5 s ist verlustarm. UMBAUPLAN: Annahme-Hinweis fuer P2 (einmal deploy.sh von Hand nachlaufen lassen, weil der Guard erst MIT diesem Deploy an Bord kommt). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,16 @@ SRC="${MC2_SRC:-$HOME/mission-control-v2}"
|
||||
cd "$SRC"
|
||||
git fetch -q origin && git reset -q --hard origin/main
|
||||
|
||||
# ★ Selbst-Reset-Falle (15.07. beim P1-Deploy live gebissen): der reset oben ersetzt auch
|
||||
# DIESE Datei, und bash liest laufende Skripte häppchenweise von der Platte weiter — ab
|
||||
# hier liefe ein Zeilen-Mix aus alter+neuer Version (beim P1-Deploy fielen so daemon-reload
|
||||
# und der mc2-gateway-Start unter den Tisch). Darum: nach dem Reset genau EINMAL die
|
||||
# frische Version neu ausführen; der zweite Durchlauf überspringt dank Env-Marke nichts.
|
||||
if [ "${MC2_DEPLOY_REEXEC:-0}" != "1" ]; then
|
||||
export MC2_DEPLOY_REEXEC=1
|
||||
exec bash "$SRC/deploy/deploy.sh"
|
||||
fi
|
||||
|
||||
# venv + Abhängigkeiten
|
||||
if [ ! -d "$SRC/backend/.venv" ]; then
|
||||
python3 -m venv "$SRC/backend/.venv"
|
||||
|
||||
@@ -21,6 +21,11 @@ Environment=MC_CONFIG_PATH=/etc/llama-swap/config.yaml
|
||||
Environment=MC_MODELS_DIR=/srv/models
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
# Stoppen darf nicht warten: der Gateway hält minutenlange LLM-Streams offen — uvicorns
|
||||
# „Waiting for connections to close" + default 90 s TimeoutStop machten jeden Restart zum
|
||||
# 502-Fenster (15.07. live gemessen, 14:29→14:31). Stateless Proxy → nach 5 s hart beenden
|
||||
# ist verlustarm; Clients (Hermes api_max_retries=3) wiederholen abgerissene Anfragen.
|
||||
TimeoutStopSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
||||
Reference in New Issue
Block a user