fix(data): import bundled transactionnel + isDataLoaded fiable #10
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
CyrilLeblanc/gresit#10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
L'import des données bundled (
TransitRepository.importBundledData,data/repository/TransitRepository.kt:92-115) enchaîne 6 inserts DAO (clusters, lines, sequences, clusterLines, geometries, physicalStops) sans transaction. Si le process meurt en cours (mémoire basse, utilisateur tue l'app au premier lancement), Room reste à moitié rempli.Pire,
isDataLoaded()(:86-88) ne vérifie queclusterDao.getAll().isNotEmpty(): un import partiel où les clusters ont atterri mais pas les géométries/séquences est considéré comme « chargé » à jamais → carte/ETAs silencieusement cassés jusqu'à l'effacement des données de l'app.Comportement attendu
data_versionécrite en dernier (présente ⇔ import complet), sinon unEXISTSconjoint sur les tables critiques.Pistes d'implémentation
insertAlldansdb.withTransaction { … }(atomique + plus rapide : un seul commit WAL).isDataLoaded(): lire la sentinelledata_version(ouEXISTSconjoint clusters + lines + geometries) ; absent/incomplet →false→ relance l'import..six/.mbtilesrégénérés, etfallbackToDestructiveMigrationmanquant — sujets distincts.Critères d'acceptation
isDataLoaded()retournefalsesur un import partiel (relance au prochain lancement).assembleDebug/assembleReleaseOK ; pas de régression chargement/carte/ETAs.