En fait c’est plutôt des bugs dans l’algo de téléchargement des chunk, qui se déclenche notamment quand des endpoint BMA ne répondent pas.
C’est pour ça que j’ai priorisé la migration de cette partie, sur laquelle je travaille en ce moment même et qui devrait être prête d’ici 2 semaines
En attendant, le seul moyen de contournement c’est de faire une sync locale à partir d’un export JSON de la blockchain. Je suis en train d’en upload un sur le cloud d’axiom …
EDIT: bon je sais pas si l’upload à marché mais voici le lien : Login – axiom-cloud
@kimamila@vit@Moul@cgeek et tous ceux qui ont un noeud gtest je ne connais pas tout le monde, mais ça me serait super utile que vous passiez votre noeud en 1.9-dev au plus vite, sans ça je suis bloqué pour tester mon algo de scan réseau GVA.
Pour ceux qui ont déjà un noeud de dev et qui voudrait le maj: le commit 99f255a9 a modifié l’architecture de toutes les bases de données.
En théorie vous devez :
Supprimer les dossiers dunp_v1_sled et txs_mp_v2_sled (dans data)
Faire un dex migrate
Le tout nœud Duniter éteint bien entendu.
Je dis en théorie, car je suis en train de tester en essayent de maj un de mes nœuds de dev, si possible, je vous recommande d’attendre que j’y arrive avant de maj vous-même (Soit attendre lundi car là il est tard et je peux pas bosser dessus demain).
Également pensez à vous manifester ici lorsque que vous avez un ou plusieurs noeuds gtest GVA, avec leur URL, que je puisse remplir mon boostrap gecko.
Je mettrais à jour le premier message de ce topic avec tous les noeuds gtest manifesté au fur et à mesure
Pour ceux qui, comme moi, utilise un template Ansible du fichier config.json pour configurer Duniter, peux-tu ajouter dans ton premier billet la section du fichier consacrée à GVA ?
Ok, je ne sais pas si ce problème a lieu sur la v1.8.1, ça fait longtemps que je n’ai pas synchronisé mon nœud gtest. C’est pas une régression de la version de dev ?
En gros, à la moindre erreur de download qui arrive pour un noeud donné, le noeud est définitivement perdu pour tout le reste de la synchro. Il y a normalement un mécanisme qui laisse 5 chances avant d’exclure un noeud, mais il est préempté par ce bug.
Désormais la conf de GVA est dans un fichier à part dans le dossier modules-conf, et il en sera de même pour tous les futurs modules Rust : admin, ğmixer, remuniter migré, etc
Le fichier est donc modules-conf/gva.conf`, et voici son contenu type :
J’aurais plutôt utilisé l’extension du format utilisé, en l’occurrence ici le json, donc gva.json. Sachant que l’on est déjà dans un dossier nommé “modules-conf”, .conf est redondant et ne nous renseigne pas sur le format. C’est pas très important, mais je préfère donnez mon avis le plus tôt possible pour qu’on puisse changer avant mise en prod.
Pour la conf des modules Rust ? Ou pour autre chose ?
Perso je préférerai faire en sorte que l’utilisateur n’est jamais besoin de modifier les fichiers de conf lui-même, or le format .yaml est destiné à de l’écriture humaine, donc ça va pas dans le sens de la philosophie «fichiers pour la machine uniquement».
C’est tout le problème du cycle de vie des fichiers de configuration dans Duniter, qui mérite d’être mis à plat.
Si le fichier est un fichier où le logiciel stocke des données persistantes, ce n’est pas un fichier de configuration, c’est une base de données en fichier.
Si le fichier est éditable par l’utilisateur pour modifier le comportement du logiciel, alors c’est bien un fichier de configuration.
Il faut ajouter à cela les configurations dynamiques (au lancement), par variables d’environnement ou options de la ligne de commande.
Qui est prioritaire sur qui ? qui est volatile ? qui est persistent ?
Option ? non -> ENV ? non -> config.yaml ? non -> default -> logiciel
C’est pour éclaircir ce cycle de vie que j’ai créé un sujet dédié :
Mais du coup, pourquoi faire des fichiers de conf lisibles et modifiables par un humain en les gardant en JSON ? Soit tu « interdis » leur écriture (fichiers binaires par ex.) soit tu admets que l’utilisateur doit pouvoir le lire/le modifier et alors je trouve YAML plus adapté.
Après, je ne vais pas entrer en croisade pour ça, je suggère c’est tout
Parce que historiquement le fichier de conf est en json, c’était d’ailleurs ton choix
Et n’ayant pas rencontré de problèmes avec le format json je ne me suis pas posé la question de changer éventuellement de format.
Oui je pourrais passer en binaire, mais ça rendrait le débogage et le support plus difficile. Pour faire du support c’est pratique de demander à l’utilisateur de nous fournir un cat de son fichier de conf.
Alors oui on pourrait développer un outil pour permettre l’export du fichier dans un format lisible par un humain, mais ce serait du temps de dev à consacrer, une ressource précieuse que je préfère consacrer à améliorer ce qui marche mal, cf roadmap 2021
Eh bien oui, j’ai mis le format JSON mais c’était par facilité d’une part, et par méconnaissance du YAML à l’époque d’autre part.
Disons que comme là on a encore le temps de passer en YAML par défaut (et que la sérialisation doit être tout aussi simple que pour le JSON en Rust - je suppose) alors si j’ai le temps je pose une MR.
Après, elle est acceptée ou pas, pour l’instant je n’entends pas tellement d’arguments contre. J’en donne un quand même : avec Duniter 1.7 le fichier est constamment réécrit. Si Duniter 1.9 veut faire la même chose, alors le YAML perd de l’intérêt notamment au regard des commentaires qui pourraient se voir écrasés.