- Adjusted infrastructure roadmap to use VM instead of nested LXC for Docker hosting, enhancing isolation and compatibility. - Clarified multi-architecture CI/CD setup with native ARM64 builds and QEMU-based x86_64 builds. - Updated documentation to include backup and offline-first strategies. - Archived outdated session logs and reports for better file organization.
2.1 KiB
2.1 KiB
| type | status | owner | date | participants | ||
|---|---|---|---|---|---|---|
| Journal | COMPLETED | Curator | 2026-01-28 |
|
Session Log: 28. Jänner 2026 - Lösung des SQLDelight-Sync-Problems
Zielsetzung
Systematische Analyse und Behebung des kritischen SQLDelight-Bugs in der Web-App (JS/Wasm), der einen echten Delta-Sync verhinderte.
Durchgeführte Arbeiten
1. Analyse & Fehlerreproduktion
- Ausgangslage: Der
PingEventRepositoryImplenthielt einen Workaround, dergetLatestSince()immernullzurückgeben ließ, um einen Full-Sync zu erzwingen. - Reproduktion: Der Workaround wurde entfernt und durch den ursprünglichen Code (
db.appDatabaseQueries.selectLatestPingEventId().executeAsOneOrNull()) ersetzt. - Ergebnis: Der Fehler
The driver used with SQLDelight is asynchronous...wurde wie erwartet in der Browser-Konsole reproduziert.
2. Systematische Ursachenforschung
- Hypothese 1 (Konfiguration): Die Build-Konfiguration (
frontend/core/local-db/build.gradle.kts) wurde überprüft.generateAsync.set(true)war korrekt gesetzt. Die Fehlermeldung war also eine falsche Fährte. - Hypothese 2 (API-Nutzung): Die Analyse ergab, dass
.executeAsOneOrNull()eine blockierende API ist, die mit dem asynchronen Web-Worker-Treiber in Konflikt steht. - Lösung: Die korrekte, nicht-blockierende API aus der SQLDelight-Coroutines-Erweiterung muss verwendet werden.
3. Implementierung des Fixes
- Der Aufruf in
PingEventRepositoryImplwurde vonexecuteAsOneOrNull()aufawaitAsOneOrNull()geändert. - Der korrekte Import-Pfad
app.cash.sqldelight.async.coroutines.awaitAsOneOrNullwurde hinzugefügt.
Ergebnis & Status
- Erfolg: Das SQLDelight-Sync-Problem ist gelöst.
- Die Web-App führt nun einen korrekten Delta-Sync durch, was durch den Aufruf des
/api/ping/sync?since=...Endpunkts im Netzwerk-Log bestätigt wurde. - Die wichtigste technische Schuld im Frontend wurde beseitigt.
Nächste Schritte (Diskutiert)
- Docker-Integration: Das Frontend (Build & Deployment) soll in die bestehende Docker-Konstruktion des Projekts integriert werden.