Suite au message de @HugoTrentesaux sur l’incohérence des données lors de l’utilisation de py-g1-migrator, et pour l’aider à avancer, j’ai écrit un petit code Python 3.10 pour vérifier la cohérence des bases de données levelDB.
Le code utilise 3 tables levelDB :
- iindex (identités)
- mindex (adhésions)
- cindex (certifications)
Je fais un simple rsync
du dossier leveldb
de mon serveur Duniter V1 pendant qu’il tourne pour éviter de le stopper, pour copier le dossier dans le dépôt de mon code.
Puis je lance mon script.
- Pour une identité membre, je vérifie que l’adhésion est valide et qu’il existe bien 5 certifications valides.
- Pour une identité non membre, je vérifie que l’adhésion soit perdue ou le manque de certifications.
Pour l’instant, il ne détecte aucune incohérence sur les adhésions…(pourtant le rsync sale sur une DB en cours d’accès pourrait être une source d’incohérences). Mais je ne suis pas à l’abri d’une erreur dans mon script.
Au début, j’avais des incohérences mais en vérifiant dans Wotwizard-UI (ma source de vérité ! ), c’était parce que je m’y prenais mal pour gérer les listes d’identités, d’adhésions et de certifications (CREATE/UPDATE).
Si des Pythonistas pensent que ce modeste travail est utile et veulent bien tester et relire mon code de leur côté pour bien confirmer mon diagnostic, je peux le publier sur le Gitlab. @Moul, @tuxmain ?