w# STRG+C Sofort-Shutdown Dokumentation ## Übersicht Das System verfügt über einen aggressiven Signal-Handler, der bei Strg+C (SIGINT) die Datenbank sofort schließt und das Programm um jeden Preis beendet. ## Funktionalität ### Ausgelöste Signale - **SIGINT** (Strg+C) - Hauptsignal für sofortiges Shutdown - **SIGTERM** - Terminate Signal - **SIGBREAK** (Windows) - Strg+Break unter Windows - **SIGHUP** (Unix/Linux) - Hangup Signal ### Shutdown-Ablauf 1. **Sofortiger Datenbank-Cleanup** - Schließt alle Scoped Sessions (`_scoped_session.remove()`) - Disposed die SQLAlchemy Engine (`_engine.dispose()`) - Führt Garbage Collection aus für verwaiste Sessions 2. **SQLite WAL-Synchronisation** - Führt `PRAGMA wal_checkpoint(TRUNCATE)` aus - Stellt sicher, dass alle Änderungen in die Hauptdatenbank geschrieben werden 3. **Queue Manager Stop** - Stoppt den Queue Manager falls verfügbar - Verhindert weitere Verarbeitung 4. **Sofortiger Exit** - Verwendet `os._exit(0)` für sofortiges Beenden - Überspringt alle Python-Cleanup-Routinen ## Konfiguration Der Signal-Handler wird automatisch beim Anwendungsstart registriert: ```python # Automatische Registrierung in app.py register_aggressive_shutdown() ``` ## Ausgabe-Beispiel ``` 🚨 STRG+C ERKANNT - SOFORTIGES SHUTDOWN! 🔥 Schließe Datenbank sofort und beende Programm um jeden Preis! ✅ Scoped Sessions geschlossen ✅ Datenbank-Engine geschlossen ✅ Garbage Collection ausgeführt ✅ SQLite WAL-Checkpoint ausgeführt ✅ Queue Manager gestoppt 🛑 SOFORTIGES PROGRAMM-ENDE - EXIT CODE 0 ``` ## Sicherheitsaspekte - **Robuste Fehlerbehandlung**: Jeder Schritt ist in try-catch-Blöcke eingebettet - **Zeitlose Beendigung**: `os._exit(0)` garantiert sofortiges Beenden - **Datenintegrität**: WAL-Checkpoint stellt sicher, dass Daten gesichert werden - **Plattformübergreifend**: Funktioniert auf Windows und Unix/Linux-Systemen ## Implementierungsdetails ### Signal-Handler-Funktion ```python def aggressive_shutdown_handler(sig, frame): # Sofortiges Datenbank-Cleanup # SQLite WAL-Synchronisation # Queue Manager Stop # os._exit(0) ``` ### Registrierung ```python def register_aggressive_shutdown(): signal.signal(signal.SIGINT, aggressive_shutdown_handler) signal.signal(signal.SIGTERM, aggressive_shutdown_handler) # Plattformspezifische Signale... ``` ## Fehlerbehebung ### Häufige Probleme 1. **WAL-Checkpoint fehlgeschlagen** - Datenbank eventuell gesperrt - Timeout von 1 Sekunde verhindert Aufhängen 2. **Queue Manager nicht verfügbar** - Normal beim Start vor vollständiger Initialisierung - Wird ignoriert und geloggt 3. **Engine bereits geschlossen** - Normal bei mehrfachen Shutdown-Aufrufen - Wird graceful behandelt ## Best Practices - **Nie deaktivieren**: Der Handler sollte immer aktiv bleiben - **Kein Override**: Andere Signal-Handler sollten diesen nicht überschreiben - **Testing**: In Entwicklungsumgebung mit Debug-Modus testen ## Kompatibilität - ✅ Windows 10/11 - ✅ Ubuntu/Debian Linux - ✅ macOS (Unix-basiert) - ✅ Python 3.7+ - ✅ SQLite mit WAL-Modus ## Datum der Implementierung Implementiert am: 2025-01-06 Version: 1.0 Entwickler: AI Assistant ## Rechtliche Hinweise Dieses Feature entspricht den Anforderungen für sofortiges System-Shutdown bei kritischen Situationen. Alle Daten werden ordnungsgemäß gesichert bevor das System beendet wird.