bugs.md #11: Hänger beim Anlegen eines DHCP-Pools #24

Closed
opened 2026-09-17 21:51:28 +02:00 by kay · 0 comments
Owner

Quelle: bugs.md #11 — Nutzer-gemeldet, live in der App

Nutzer-Meldung: App bleibt beim Anlegen eines /ip pool-Eintrags im Experte-Tab dauerhaft hängen (kein Fehler, kein Selbst-Erholen, Force-Quit nötig).

Root Cause: SSHTransport.connect()/run(_:) hatten keinen Timeout — im Gegensatz zu RestTransport (timeoutInterval = 5). Jeder erste Schreibvorgang einer Session löst über ensureSessionBackup() eine dedizierte SSH-Verbindung aus (BackupService); hängt dieser connect()-Aufruf (Netzwerk-Aussetzer, schwacher Router unter Last), blieb isApplying unbegrenzt aktiv.

Fix: neuer generischer SSHTransport.withTimeout(_:operation:) (TaskGroup-Race gegen eine Deadline), angewendet auf connect() (10s) und run(_:) (30s). 3 neue Regressionstests für die Race-Logik isoliert (unabhängig von Citadel/echtem Netzwerk).

Nebenbefund: xcodegen generate überschreibt Info.plist komplett aus project.yml (kein Merge) — dabei versehentlich die App-Version stillschweigend zurückgesetzt. In project.yml jetzt explizit verankert.

Build + alle 106 Unit-Tests grün. Root Cause vom Nutzer bestätigt (Experte-Tab, dauerhaft hängend) bevor der Fix geschrieben wurde — nicht erneut live nachgestellt.

**Quelle:** bugs.md #11 — Nutzer-gemeldet, live in der App Nutzer-Meldung: App bleibt beim Anlegen eines `/ip pool`-Eintrags im Experte-Tab dauerhaft hängen (kein Fehler, kein Selbst-Erholen, Force-Quit nötig). **Root Cause:** `SSHTransport.connect()`/`run(_:)` hatten keinen Timeout — im Gegensatz zu `RestTransport` (`timeoutInterval = 5`). Jeder erste Schreibvorgang einer Session löst über `ensureSessionBackup()` eine dedizierte SSH-Verbindung aus (`BackupService`); hängt dieser `connect()`-Aufruf (Netzwerk-Aussetzer, schwacher Router unter Last), blieb `isApplying` unbegrenzt aktiv. **Fix:** neuer generischer `SSHTransport.withTimeout(_:operation:)` (TaskGroup-Race gegen eine Deadline), angewendet auf `connect()` (10s) und `run(_:)` (30s). 3 neue Regressionstests für die Race-Logik isoliert (unabhängig von Citadel/echtem Netzwerk). **Nebenbefund:** `xcodegen generate` überschreibt `Info.plist` komplett aus `project.yml` (kein Merge) — dabei versehentlich die App-Version stillschweigend zurückgesetzt. In `project.yml` jetzt explizit verankert. Build + alle 106 Unit-Tests grün. Root Cause vom Nutzer bestätigt (Experte-Tab, dauerhaft hängend) bevor der Fix geschrieben wurde — nicht erneut live nachgestellt.
kay closed this issue 2026-09-17 21:51:28 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kay/RouterOS#24