J’ai reboot mon nœud archive sans mettre à jour dans cette version, je me suis retrouvé isolé pendant pratiquement 24h.
J’en conclue qu’en cas de redémarrage de son nœud, il est désormais impératif d’avoir cette version au minimum puisque le bootstrap node est désormais down. N’est-ce pas ?
Actuellement, sur la télémétrie seulement 5 nœuds sur 34 ont fait la mise à jour.
Petite question concernant la mise à jour pour les nœuds smith/forgerons.
En GTest je faisais un redémarrage rapide du nœud sans passer offline (cela prend quelques secondes).
Qu’en est-il pour la G1 (prod); est-ce acceptable de faire la mise à jour des nœuds Smith/Forgerons sans passer offline ?
Et si pas acceptable, est-il possible de scripter une mise à jour complète qui attend d’être effectivement passé offline avant de mettre à jour et repasse online après ?
Et dans le cas où il faudrait passer offline, est-ce qu’il n’y a pas un risque réel de se retrouver avec trop de nœuds forgerons offline en même temps ?
Ça dépend de la nature de la mise à jour. Il faudrait ajouter cette information sur la page de release.
Pour cette mise à jour précise, c’est OK de simplement redémarrer en prod, car le binaire ne change pas : on change seulement les bootnodes configurés.
Mais pour d’autres mises à jour plus substantielles, il sera préférable de passer en go_offline avant.
Non si tout les forgerons respectent bien la règle qui consiste à attendre 2 heures après une transaction go_offline réussie, le problème qu’on à eu en gtest viens uniquement du fait que certains forgerons ou coupées leur noeud sans exécuter go_offline au moins 2 h avant.
Prenons un scénario peu probable mais tout de même possible:
On demande aux forgerons de mettre à jour leurs nœuds, et ils le font tous exactement au même moment.
Les forgerons font leur go-offline
± 2 heures plus tard on se retrouve sans aucun forgeron online Est-ce qu’il y aura encore moyen de revenir online à ce moment là ?
Les forgerons font la mise à jour et font le go-online
±2 heures avant de récupérer le 1er forgeron online - pendant ce temps la, plus possible d’utiliser le réseau je suppose ?
Et sinon pour pouvoir scripter ± proprement un update complet de serveur forgeron; est-ce qu’il y a un appel simple à pouvoir réaliser en script pour savoir quand le noeud devient effectivement offline ?
Non, la blockchain est arrêtée. Il faudrait créer un runtime spécifique qui hardcode une autorité et l’injecter dans les chain specs via runtimeSubstitutes. J’espère qu’on n’aura jamais à le faire. Il faudra s’organiser entre forgerons pour ne pas tous upgrade en même temps.
On peut aussi ajouter un check qui interdit go_offline s’il y a trop peu de forgerons en ligne.
Il faut lire la valeur de stockage authorityMembers.onlineAuthorities() et t’assurer que ton index d’identité ne s’y trouve plus.
Possible d’élaborer sur ce point ? La mise à jour d’un noeud consiste à mettre à jour le docker-compose.yml pour pointer la nouvelle image à utiliser, puis relancer le service avec docker compose up -d. Le downtime associé est de l’ordre d’une poignée de minutes.
Ça, c’est le downtime côté ops. Ça ne veut pas dire que le nœud va pouvoir immédiatement produire des blocs dès qu’il est relancé. Il peut y avoir une migration de la base de données suite à un changement de version, ou un besoin de resynchroniser pour diverses raisons. Je penserai à le préciser dans les release notes le jour où ça arrive, mais dans le cas général, il ne faut pas assumer qu’un nœud forgeron va forcément pouvoir reproduire des blocs dès qu’il a démarré.