Feat: Auto-Rollback bei Engine-/Router-Update wenn Stack-Check fehlschlaegt
update-engine.sh / update-swap.sh sichern jetzt den alten Build/die alte Binary VOR dem Ueberschreiben (.bak), verifizieren nach dem Restart per stack-postcheck.sh und rollen bei Fehler automatisch zurueck (Binary/Dir wiederherstellen + restart + erneut pruefen). Exit-Codes: 0 = neuer Build verifiziert, 1 = fehlgeschlagen aber Rollback ok (alter Stand laeuft wieder), 2 = Update UND Rollback kaputt. Da die Skripte den Postcheck nun selbst fahren (um reagieren zu koennen), entfaellt das `&& stack-postcheck` in engine/swap-update-job. OS-Update behaelt den reinen Detect-Check (apt-Downgrade waere unsicher). Backups sind winzig (Engine 86M, Swap 14M) bei 1.6TB frei. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -495,10 +495,10 @@ def engine_update_job(sudo_password: str | None = None) -> dict | None:
|
||||
def on_done():
|
||||
_engine_cache.update(ts=0.0, avail=False) # Cache leeren → frischer Build-Vergleich
|
||||
|
||||
# update-engine.sh läuft via sudo als root und startet llama-swap am Ende selbst neu.
|
||||
# Danach Stack-Funktionsprüfung (echte Inferenz) → Job wird rot, wenn der neue Build kaputt ist.
|
||||
cmd = f"{ENGINE_UPDATE_CMD} && bash {STACK_POSTCHECK}"
|
||||
job_id = jobengine.start_job(["bash", "-c", cmd],
|
||||
# update-engine.sh sichert den alten Build, aktualisiert, startet llama-swap neu, prüft den
|
||||
# Stack (stack-postcheck.sh) und rollt bei Fehler selbst zurück. Exit 0 nur bei verifiziertem
|
||||
# neuen Build → on_done (Cache leeren) läuft nur dann; bei Rollback (Exit 1/2) bleibt das Badge.
|
||||
job_id = jobengine.start_job(["bash", "-c", ENGINE_UPDATE_CMD],
|
||||
"Engine-Update (llama.cpp Vulkan)",
|
||||
on_done=on_done, sudo_password=sudo_password)
|
||||
return {"ok": True, "job_id": job_id}
|
||||
@@ -513,10 +513,10 @@ def swap_update_job(sudo_password: str | None = None) -> dict | None:
|
||||
def on_done():
|
||||
_swap_cache.update(ts=0.0, avail=False) # Cache leeren → frischer Versions-Vergleich
|
||||
|
||||
# update-swap.sh läuft via sudo als root, ersetzt die Binary und startet llama-swap neu.
|
||||
# Danach Stack-Funktionsprüfung (echte Inferenz) → Job wird rot, wenn der Router kaputt ist.
|
||||
cmd = f"{SWAP_UPDATE_CMD} && bash {STACK_POSTCHECK}"
|
||||
job_id = jobengine.start_job(["bash", "-c", cmd],
|
||||
# update-swap.sh sichert die alte Binary, aktualisiert, startet llama-swap neu, prüft den Stack
|
||||
# (stack-postcheck.sh) und rollt bei Fehler selbst zurück. Exit 0 nur bei verifizierter neuer
|
||||
# Version → on_done (Cache leeren) läuft nur dann; bei Rollback (Exit 1/2) bleibt das Badge.
|
||||
job_id = jobengine.start_job(["bash", "-c", SWAP_UPDATE_CMD],
|
||||
"Router-Update (llama-swap)",
|
||||
on_done=on_done, sudo_password=sudo_password)
|
||||
return {"ok": True, "job_id": job_id}
|
||||
|
||||
Reference in New Issue
Block a user