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. 