Phase 1: Supervisor/Launcher mit Prozessüberwachung (§6.1A, §26)

- Supervisor: echte Kindprozesse, portable Umgebung, freie Portwahl
- Kontrolliertes Beenden: terminate -> wait -> kill mit Recovery-Markierung
- Restart-Policy mit Crashloop-Erkennung (Zeitfenster-Schwelle)
- Recovery-Marker: forced-kill wird persistent dokumentiert (§26.4)
- 10 Tests mit echten Prozessen (keine Mocks): Start/Stop, Crash-Restart,
  Crashloop, SIGTERM-resistenter Prozess, Environment-Vererbung
This commit is contained in:
HMS MediaEngine Agent
2026-09-11 00:54:45 +02:00
parent de7d1a840f
commit 80dc10de22
3 changed files with 405 additions and 4 deletions
+9 -4
View File
@@ -1,10 +1,15 @@
"""hms_launcher Supervisor/Launcher (PLAN.md §6.1A, §9).
Phase-0-Umfang: portable Pfadauflösung, Portwahl, GStreamer-Environment,
kontrollierter Start von Control Core und Renderer. Vollständige
Heartbeat-/Crash-Recovery-Logik folgt in Phase 1 (§31).
Phase-0/1-Umfang: portable Pfadauflösung, Portwahl, GStreamer-Environment,
Prozessüberwachung mit Restart-Policy und Crashloop-Erkennung,
kontrolliertes Beenden mit Recovery-Markierung.
"""
from hms_launcher.paths import AppPaths, resolve_app_root
from hms_launcher.supervisor import (
ProcessSpec,
Supervisor,
find_free_port,
)
__all__ = ["AppPaths", "resolve_app_root"]
__all__ = ["AppPaths", "resolve_app_root", "ProcessSpec", "Supervisor", "find_free_port"]