Campagne de Test Duniter 1.8

Fil dédié à la campagne de test de Duniter 1.8 : Duniter 1.8.0-beta5 released

Ça implique quoi d’être bêta-testeur ?

  • Connaître les fonctionnalités de Duniter dans les grandes lignes, savoir à peu près comment un nœud est censé se comporter (donc être déjà utilisateur de Duniter depuis au moins quelques mois).
  • Aider à compléter le cahier des tests de la version.
  • Surveillez régulièrement son nœud durant la campagne de test afin de détecter toute anomalie (et donc être capable de créer un ticket avec un rapport de bug le cas échéant).
  • Être réactif en cas de correctif publié sur ce forum : donc faire l’effort de consulter quotidiennement ce fil pendant la campagne de test (ce qui prend 30 secondes par jour, il s’agit juste de « vérifier » sur ce fil si un correctif a été publié).

Cahier des tests

Ce post est en mode wiki, modifiez le pour indiquer les lignes du cahier que vous avez testés.
Lorsque vous avez testé une ligne du cahier, ajoutez une croix entre les crochets :

Point non testé : [ ] description description
Point partiellement testé : [\*] description description
Point testé : [x] description description

Installation

Taille du fichier

  • La taille du fichier duniter-server .deb x64 ne doit pas dépasser 55 Mo
  • La taille du fichier duniter-server .deb ARM ne doit pas dépasser 55 Mo
  • La taille du fichier duniter-desktop .deb x64 ne doit pas dépasser 130 Mo
  • La taille du fichier duniter-desktop .tar.gz x64 ne doit pas dépasser 130 Mo

Utilisabilité

  • Le programme duniter-server est utilisable sur Debian avec le paquet .deb x64
  • Le programme duniter-desktop est utilisable sur Debian avec le paquet .deb x64
  • Le programme duniter-server est utilisable sur sur ARM avec le paquet .deb ARM
  • Le programme duniter-desktop est utilisable sur GNU/Linux avec le paquet .tar.gz x64
  • Le programme duniter-server est utilisable sur GNU/Linux par compilation manuelle

Dossiers d’installation

  • L’installation de Duniter ne crée pas de dossier $HOME/.config/duniter
  • Le paquet Debian remplace tout le contenu du dossier /opt/duniter

Commands

duniter reset data

  • Duniter should be able to reset its data.

duniter sync g1.duniter.org:443

  • Duniter should be able to synchronize on this mirror peer.

duniter direct_start

  • Duniter should be able to start with interactive execution. Should be stoppable with Ctrl+C.

duniter start

  • Duniter should be able to start in daemonized way.

duniter status

  • Duniter should be UP and running after duniter start.

duniter stop

  • Duniter should be able stoppable after duniter start.

duniter webstart

  • Duniter should be able to start in a daemonized way with its UI available at http://localhost:9220.

Behavior

Duniter must respect a set of behaviors once started.

Memory consumption

  • Duniter must have a footprint of ~700MB in memory. If this amount grows, there is a memory leak.
  • Duniter Desktop must have a footprint of ~850MB in memory. If this amount grows, there is a memory leak.

New blocks detection

  • Duniter should detect eventual new blocks available on the network on its startup, pull and add them to its HEAD branch.

Main blocks

  • Duniter should be able to receive and add new valid blocks for the HEAD of its blockchain.

Fork blocks

  • Duniter should be able to receive fork blocks, i.e. blocks that does not push on the top of its blockchain and whose number is < HEAD.number - forkWindowSize.

forkWindowSize is the value given at URL / of each node, for example https://g1.duniter.org/

Network detection

  • Duniter should be detected by the existing network. As soon as the node is UP, it should be known and UP by the node it was synced with (in the tests, g1.duniter.org:443).

Fork resolution

  • Duniter should be able to resolve forks, i.e. switch on a branch that does not contain HEAD but which is taller than HEAD branch by at least:

  • 6 blocks

  • 30 minutes of medianTime field

A technique to test this:

duniter reset data
duniter sync g1.duniter.org:443
duniter gen-next --submit-local

Then wait for the local block to be computed, as well as the network block. This way, the local node should have a different HEAD than the network. Starting the node shoul show a fork on the network with only our node.

After ~30 minutes, the fork should be resolved.

Bloc computation

  • The node should sucessfully compute one block.

Interface graphique

  • La nouvelle version s’affiche bien dans la barre de titre
  • Lorsque la fenêtre (duniter-desktop exclusivement) est redimensionnée, l’application conserve ces dimensions même après un redémarrage du logiciel.
  • [Home] Changer pour une version plus récente conserve les données (nom de monnaie, current block, …)
  • [Home] La tuile [Connected peers] s’incrémente rapidement à une valeur positive après le démarrage
  • [Home > Network > WS2P Connections] Le nœud se connecte bien au réseau, avec des connexions entrantes (INCOMING) et/ou sortantes (OUTCOMING) selon la configuration réseau demandée.
  • [Home > Network > WS2P Connections] Le nœud liste les nœuds privilégiés sur fond violet
  • [Home > Network > WS2P Connections] Le nœud liste les nœuds préférés sur fond vert
  • [Home > Network > Network view] En version >= 1.6, le nœud est visible dans la liste.
  • [Home > Network > Network view] En version >= 1.6.15, le nœud affiche une valeur pour la colonne [Step]*
  • [Home > Network > Network view] En version >= 1.6.15, le nœud affiche une valeur « WS2P[O…][I…] » pour la colonne [API]*
  • [Home > Network > Network view] En version >= 1.6.15, le nœud affiche une valeur pour la colonne [Free Rooms]*
  • [Home > Network > Network view] En version >= 1.6.16, le nœud modifie la valeur de la colonne [Free Rooms] à mesure que des connexions entrantes (INCOMING) s’ajoutent à la liste [WS2P Connections] et à l’occasion d’un changement de valeur du champ [HEAD] (se produit lorsqu’un nouveau bloc arrive).*

* Alors attention : si le HEAD transite par ne serait-ce qu’un seul noeud de version <= 1.6.14 avant d’arriver jusqu’a votre noeud vous verrez le HEAD dégradé au format v1 quelque soit la version du noeud émetteur, cela est parfaitement normal.

Transverse

  • Le nœud reste synchronisé avec le réseau, et reçoit en quasi temps-réel les nouveaux blocs.
  • Le nœud reçoit correctement les transactions, et tente de les inclure dans un bloc.
  • Le nœud ne dépasse pas, pendant toute son utilisation, les seuils de mémoire suivants :
    • 700 Mo d’utilisation pour duniter-server
    • 850 Mo d’utilisation pour duniter-desktop
1 J'aime

Sur Debian 10, x64, avec le .deb, Node 10.19.0.

Les commandes wizard ne font que ça :

2020-05-23T09:43:55+02:00 - debug: Plugging file system…
2020-05-23T09:43:55+02:00 - debug: Loading conf…
2020-05-23T09:43:55+02:00 - debug: Configuration saved.
2020-05-23T09:43:55+02:00 - debug: Configuration saved.

Mais le dossier de config est bien créé.

duniter sync g1.duniter.org:443 donne l’erreur ESOCKETTIMEDOUT.

Laquelle précisément et qu’attend tu qu’elle fasse de plus ?

Alors pour le coup ça n’a rien a voir avec Duniter. C’est le serveur qui héberge le noeud g1.duniter.org qui a subis des grosses modifications récemment en terme de sécurité, mais depuis il y a un ralentissement notable des requêtes vers ce serveur.

J’ai testé network et key, et j’attendais que ça lance le wizard, qu’il demande la config au clavier…

1 J'aime

Merci c’est corrigé :slight_smile:
Continuez les tests, j’attends un peu avant de livrer une beta3 si jamais il y a d’autres régressions trouvées entre temps.

1 J'aime

Du coup je viens de livrer la beta3 :slight_smile:

@TestSmith on a besoin de renfort pour compléter le cahier des tests, merci d’avance pour votre aide :slight_smile:

Bug que j’ai trouvé :

Pour le moment, la version béta3 ne s’installe pas par-dessus la béta2. Je suppose que c’est un problème de béta. Ou alors c’est parce que j’installe la version Desktop par-dessus la version server.

Sur Debian 10.

je joins le log :

$  sudo dpkg -i duniter-desktop-v1.8.0-beta3-linux-x64.deb
[sudo] Mot de passe de bob : 
Sélection du paquet duniter-desktop précédemment désélectionné.
(Lecture de la base de données... 309986 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de duniter-desktop-v1.8.0-beta3-linux-x64.deb ...
Dépaquetage de duniter-desktop (1.8.0-beta3) ...
dpkg: erreur de traitement de l'archive duniter-desktop-v1.8.0-beta3-linux-x64.deb (--install) :
 tentative de remplacement de « /opt/duniter/duniter.zip », qui appartient aussi au paquet duniter 1.8.0-beta2
dpkg-deb: erreur: coller subprocess was killed by signal (Relais brisé (pipe))
Traitement des actions différées (« triggers ») pour desktop-file-utils (0.23-4) ...
Traitement des actions différées (« triggers ») pour mime-support (3.62) ...
Des erreurs ont été rencontrées pendant l'exécution :
 duniter-desktop-v1.8.0-beta3-linux-x64.deb

Contourné avec :

 aptitude remove duniter
 dpkg -i duniter-desktop-v1.8.0-beta3-linux-x64.deb

La version Desktop a des soucis de traduction :sweat_smile:

2020-05-27-173759_1600x900_scrot

2020-05-27-174343_1600x900_scrot

@Moul c’est un problème de corruption de ton fichier wot, si tu reset data et sync ce sera résolu.

Je ne vois que 2 explications possibles :

  • Ton noeud s’est arrêté de manière inopiné, ce qui a corrompu le fichier wot. J’ai déjà remarqué ce comportement, hélas pas évitable, il faudrait plutôt faire en sorte que Duniter s’arrête moins souvent.
  • C’est un noeud 1.7 que tu a mis à jour en 1.8 sans reset data, et il ne s’est jamais arrêté tout seul, dans ce cas c’est le code de migration qui flanche.

@matograine attention il ne faut jamais faire cela, ce sont 2 paquets différents et indépendants donc considérés comme logiciels différents par ton OS alors qu’il utilisent les mêmes ressources. Il faut impérativement désinstaller la variante server avant d’installer la variante desktop, et vice versa.

Désinstalle les deux puis réinstalle desktop et si les soucis de traduction persistent ouvre un ticket sur le dépot duniter-ui : https://git.duniter.org/nodes/typescript/modules/duniter-ui

Je repars sur une nouvelle synchronisation.

Chez moi ça tourne bien, mais avec direct_start le CTRL+C le ferme salement :

2020-05-28T00:23:19+02:00 - error: Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed
at ChildProcess.target.send (internal/child_process.js:636:16)
at Worker.send (internal/cluster/worker.js:40:28)
at PowWorker.sendCancel (/opt/duniter/app/modules/prover/lib/PowWorker.js:81:27)
at slaves.forEach (/opt/duniter/app/modules/prover/lib/powCluster.js:121:22)
at Array.forEach ()
at Master.cancelWorkersWork (/opt/duniter/app/modules/prover/lib/powCluster.js:120:21)
at Master.cancelWork (/opt/duniter/app/modules/prover/lib/powCluster.js:130:14)
at PowEngine.cancel (/opt/duniter/app/modules/prover/lib/engine.js:43:29)
at WorkerFarm.stopPoW (/opt/duniter/app/modules/prover/lib/blockProver.js:70:53)
at BlockProver.cancel (/opt/duniter/app/modules/prover/lib/blockProver.js:122:24)

Ça je ne le corrigerai pas, surtout que cette partie est déjà migré, juste pas embarquée en 1.8 car il y a d’autres soucis, qui devraient être résolus par une migration plus avancée (couche d’accès a la base de donnée notamment).

J’ai redémarré mon noeud Desktop après avoir supprimé le dossier et resynchronisé.

Or, j’observe dans les logs qu’il a tenté de calculer des blocs avec la clef publique automatiquement générée (non-membre) :

2020-05-28T20:05:05+02:00 - info: Matched 4 zeros 00009DAC4211BB938573C4FCE8DF86E424FF35BDF971B7D29FC915480325E945 with Nonce = 10100000006789 for block#325866 by E9P3nw
2020-05-28T20:05:10+02:00 - info: Matched 4 zeros 0000E724A8ABBE6EB7CFF6D7EE085AA41C6DE74298B86C9D77FADDF36C73AE2F with Nonce = 10100000012238 for block#325866 by E9P3nw
2020-05-28T20:05:18+02:00 - info: Matched 4 zeros 00007D5D568A9FA296C3546F94536B4F6D4744ECF1907F58FD27331CFE03DE96 with Nonce = 10200000022738 for block#325866 by E9P3nw

Ceci ne se reproduit pas lorsque je change de nouveau le keyring pour un compte non membre.

Un message a été scindé en un nouveau sujet : Builder Duniter pour arm

Il y a quelque chose que je ne vois pas : quand on a testé une fonctionnalité, on édite directement le post en mode wiki ou on le signale quelque part avant ?

Pour ma part, après avoir lancé duniter-desktop pour linux générique, la synchronisation commence mais s’arrête avec l’erreur

2020-06-01T12:14:06+02:00 - error: Could not get a validation from remote blockchain after 15 trials. Stopping sync.

Lancer le programme une deuxième fois ne mène pas à cette erreur. Dois-je cocher la case

Le programme duniter-desktop est utilisable sur GNU/Linux avec le paquet .tar.gz x64

?

Doit-on s’intéresser aux erreurs liées à l’interface web ?

[6056:6056:0601/122448.474490:ERROR:buffer_manager.cc(491)] [.BrowserCompositor-0x55709739e210]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command

Que faire des erreurs signalées comme

2020-06-01T12:17:48+02:00 - error:  Error: ruleNumber
    at Function.checkBlock (/home/hugo/Téléchargements/duniter-desktop-v1.8.0-beta3-linux-x64/app/lib/blockchain/DuniterBlockchain.js:63:19)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Ma priorité étant la migration en Rust, je ne m’engage à corriger que les bugs bloquant pendant la migration.

Pour moi un bug bloquant c’est : un bug qui empêche le fonctionnement d’une fonctionnalité indispensable ET pour lequel il n’existe aucune solution de contournement.

Il se peut que je corrige également des bugs non-bloquants si j’en ai l’envie (c’est d’ailleurs ce que j’ai fait pour la commande wizard network, qui n’est pas une fonctionnalité indispensable), mais je ne m’engage pas sur ces derniers.

Ce n’est pas bloquant, et cela concerne en plus un module déjà oxydé (prover), juste pas encore intégré dans une release, je ne prévois pas de le corriger.

On édite directement le post en mode wiki :slight_smile:
Et si tu penses qu’il y a des informations complémentaires à communiquer à propos de ce test, et bien tu écris un post dans ce fil.

Ce n’est pas un bug bloquant, c’est un problème réseau, cela signifie que l’un des noeuds du réseau n’est pas joignable derrière le endpoint indiqué sur sa fiche de peer.
Il faudrait refondre complètement le code de la sync réseau pour mieux gérer ça, je ne le ferai pas, je prévois d’écrire directement WS2Pv2 en Rust dans Duniter (en reprenant ton code d’ailleurs) quand la migration sera suffisamment avancée pour le permettre.

oui :slight_smile:

Perso je ne gère pas l’interface web, tu peux créer un ticket sur le dépôt de duniter-ui qui est maintenu par @cgeek mais rien ne dit que ce sera corrigé, en tous les cas ça ne bloquera pas la sortie de Duniter 1.8.

On aurait grand besoin d’un dev front motivé pour reprendre l’interface graphique de Duniter, j’en ai parlé à @ManUtopiK qui m’a dit qu’il regarderait :slight_smile:

Je ne sais pas si c’est bloquant ou non, car il me manque le contexte, dans quel contexte s’est produit cette erreur ?

2 J'aimes

Merci pour toutes ces réponses. L’erreur affichée n’est pas bloquante, c’est juste bizarre de voir du rouge dans le terminal. Pour information, duniter fonctionne parfaitement dans WSL (windows subsystem linux) version serveur comme version desktop. Je vais probablement faire un tutoriel un de ces jours pour documenter le fonctionnement.

1 J'aime

Ce bug n’est peut-être pas nouveau, mais mon nœud s’est bloqué au bloc 325608 (il a le même que le réseau), a forgé le 325609, et quand il essaie de résoudre le fork il trouve que le 325609 du réseau est invalide :

$ duniter pull g1.e-is.pro:443
2020-06-01T16:41:30+02:00 - debug: Plugging file system...
2020-06-01T16:41:30+02:00 - debug: Loading conf...
2020-06-01T16:41:30+02:00 - debug: Configuration saved.
2020-06-01T16:41:30+02:00 - debug: Opening SQLite database "/home/tuxmain/.config/duniter/duniter_default/duniter.db"...
2020-06-01T16:41:31+02:00 - debug: Now open indexers...
2020-06-01T16:41:32+02:00 - debug: Opening SQLite database "/home/tuxmain/.config/duniter/duniter_default/txs.db"...
2020-06-01T16:41:32+02:00 - debug: Opening SQLite database "/home/tuxmain/.config/duniter/duniter_default/peers.db"...
2020-06-01T16:41:34+02:00 - debug: Upgrade database...
2020-06-01T16:41:34+02:00 - info: Block resolution: 0 potential blocks after current#325609...
2020-06-01T16:41:34+02:00 - info: Fork resolution: 97 potential block(s) found...
2020-06-01T16:41:35+02:00 - info: Fork resolution: 1 potential suite(s) found...
2020-06-01T16:41:35+02:00 - info: Fork resolution: HEAD = block#325609
2020-06-01T16:41:35+02:00 - info: Fork resolution: suite 1/1 (-> #325708-000000) revert to fork point block#325608
2020-06-01T16:41:35+02:00 - debug: Reverting block #325609...
2020-06-01T16:41:48+02:00 - info: Fork resolution: suite 1/1 REFUSED block#325609: ruleToBeKickedArePresent
2020-06-01T16:41:59+02:00 - info: Block #325609 added to the blockchain in 3103 ms
2020-06-01T16:41:59+02:00 - info: Looking at g1.e-is.pro:443...
2020-06-01T16:42:00+02:00 - error: Block already known
2020-06-01T16:42:00+02:00 - debug: Trying to close SQLite...
2020-06-01T16:42:00+02:00 - debug: Trying to close SQLite...
2020-06-01T16:42:00+02:00 - info: Database closed.
2020-06-01T16:42:00+02:00 - info: Database closed.
2020-06-01T16:42:00+02:00 - debug: Trying to close SQLite...
2020-06-01T16:42:00+02:00 - info: Database closed.