Utilisation de batch d’insertion seulement, plutot que insert or update, si --nocautious ou full synchro MR!1429
Utilisation des noeuds Yunohost (BMAS avec un chemin) - MR!1432
J’ai poussé une branche test/1.8 avec toute ces MR, pour tester d’un coup
@Pini as tu moyen de tester une synchro dessus et me dire si c’est mieux ? La mienne est en cours…
N’oublies pas de faire un reset data avant (pour que le mode --nocautious s’active) et d’activer le stockage des TX
@cgeek : j’ai des questions sur la synchronisation :
Sais tu si les piscines sont bien vidées avant une synchro ? Si oui, cela me permet d’éviter de faire des mises à jour des TX pending. Je penses que c’est une bonne approche, d’autant que les piscines sont récupérer à la fin de la synchro, non ?
Mais à la fin de la synchro la récupération des piscines ne fonctionne pas très bien car trop gourmande. Mais tu as poussé un correctif sur ce point, URL /wot/requirements-of ou similaire.
Super, dans ce cas la synchro des TX devrait pouvoir éviter les “update or insert”, pour n’utiliser que des “insert” ? Voir même des insert en batch, avec un buffer que l’on flush en fin de synchro. On n’a pas besoin qu’elles soient persister aussitôt.
Comme axe d’optimisation de la synchro, j’ai également l’idée de désactiver les contraintes BDD (null check, etc), si on est en mode --nocautious. Et tout réactiver a la fin.
A tester pour voir si on gagne vraiment.
Enfin, je me demande comment résoudre le problème mémoire que l’on rencontre actuellement…
Je ne savais pas a quoi servait ces URL BMA donc je ne penses pas avoir changer des trucs là dessus.
Non je ne crois pas que cela pose problème pour la mémoire.
Je ne parlais de tout flusher uniquement à la fin, mais en plus a la fin. Typiquement on flush toutes les 1000 ou 2000 TX, et les dernières qui restent a la fin. Cela lisse le temps consacré à la persistance des TX.
Mais je ne parle de cela car c’est le seul bout de code que je commence à bien comprendre c’est peut-être dérisoire en terme de gain.
Je vous redirai après les tests. Si @Pini ou d’autypeuvent aussi tester de leur côté …
Je viens de tester une synchro from scratch avec la banche test/1.8 : 9000s.
Ça ne veut pas dire que c’est forcément pire qu’avant. C’est dans la fourchette haute de tous mes tests précédent. Et mon PC n’était peut-être pas en forme à ce moment. Mais en tout cas il n’y a malheureusement pas d’amélioration significative.
EDIT : Un nouvel essai à mis 8110s. Le meilleur temps de cette campagne de tests.
C’est compliqué. Le travail de simplification d’utilisation de l’image Docker fait sur la branche dev n’a pas été porté sur la version 1.8. Et je n’utilise que Docker sur mes serveurs. Qui sont par ailleurs déjà bien chargés, donc même si j’arrive à bricoler un truc je ne suis pas certain que ce soit très utile.
Je vais mettre les mains dedans, et on verra bien.
ok, de mon côté tous les tests passent maintenant, avec mes optimisations sur Duniter 1.8.
Certains bugs étaient compliqué a débusquer, et même déjà présents en production dans la 1.8 (et 1.9).
=> @cgeek je penses que ca pourrait valoir le coup que tu jette une oeil sur ces 2 tickets 1446 et 1447 (et MR associées), car ces bugs sont en prod, et je ne connais pas effets possibles. Il s’agit de problème lié au revert de block : les sous-index LevelDB de SINDEX ne sont alors plus à jour (trop de ligne nettoyées pour indexForConditions, ou pas assez indexForTrimming)
dans tous les cas, je vais merge mes MR en attente sur release/1.8, dans l’après-midi.
On pourra tenter une release ensuite !
Tu es trop fort @Pini ! Ca marche nickel. Bon du coup j’ai fait des modifs (d’autres MR) et donc la branche test/1.8 n’est plus jour.
Je mets à jour et je te redis.
Du coup après un fork, il y a de grandes chances que les nœuds (1.8 et 1.9) n’arrivent plus à rejoindre la branche principale, car leur sous-index de sources sont corrompus (indexForConditions, indexForTriming). Ca expliquerai ces problèmes à répétition, non ?
Hum non bizarre. As tu bien rebuildé ton noeud ?
Par ailleurs, si tu avais déjà un noeud synchro, il faut se resynchroniser. Car certains index étaient corrompus avant les mise à jour de ce jour, par un simple fork.
Car je vois que tu n’as pas le storage dans la réponse à /node/summary (donc pas ce code)