G1-test dans les choux ?

g1-test

#333

Bon, j’ai trouvé la cause. Si tu la trouves aussi @Moul, je devrais te tirer mon chapeau. Là c’est du niveau Cœur de Ğ1++ !

Je te laisse chercher un peu, tu nous diras où t’on mené tes dernières investigations :slight_smile: tu peux aussi donner ta langue au chat, mais quoi qu’il en soit je ne pousserai de correctif que demain soir car je veux poser un test verrou.


#334

J’ai peu être un correctif, mais je ne suis pas sûr que ça soit correct étant donné que ça me paraît trop simple en vu du niveau de difficulté que t’as donné à l’exercice.

Le correctif peut également être à l’endroit où est assigné la variable op de la certification, mais je n’ai pas trouvé cet endroit.

La synchronisation n’a pas engendré de segfault :

2019-05-02T00:00:23+02:00 - ^[[32minfo^[[39m: Block #362829 added to the blockchain in 28 ms
2019-05-02T00:00:23+02:00 - ^[[32minfo^[[39m: Block #362830 added to the blockchain in 18 ms
2019-05-02T00:00:23+02:00 - ^[[32minfo^[[39m: Block #362831 added to the blockchain in 19 ms
2019-05-02T00:00:23+02:00 - ^[[32minfo^[[39m: Block #362832 added to the blockchain in 44 ms
2019-05-02T00:00:24+02:00 - ^[[32minfo^[[39m: Block #362833 added to the blockchain in 36 ms
2019-05-02T00:00:24+02:00 - ^[[32minfo^[[39m: Block #362834 added to the blockchain in 28 ms
2019-05-02T00:00:24+02:00 - ^[[32minfo^[[39m: Block #362835 added to the blockchain in 21 ms

Je sais pas comment avoir tous les journaux de synchronisation (mon fichier contiens que la fin).

Et le correctif sous forme de patch :

diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts
index ea1b1002..f14e8aa5 100644
--- a/app/lib/dal/fileDAL.ts
+++ b/app/lib/dal/fileDAL.ts
@@ -1072,10 +1072,11 @@ export class FileDAL {
     for (const entry of cindex) {                                                                                                 
       const from = await this.getWrittenIdtyByPubkeyForWotbID(entry.issuer);                                                      
       const to = await this.getWrittenIdtyByPubkeyForWotbID(entry.receiver);                                                      
       if (entry.op == CommonConstants.IDX_CREATE) {                                                                               
         // NewLogger().trace('addLink %s -> %s', from.wotb_id, to.wotb_id)                                                        
         wotb.addLink(from.wotb_id, to.wotb_id);                                                                                   
-      } else {
+      } else if (entry.op != CommonConstants.IDX_UPDATE) {
         // Update = removal                                                                                                       
         NewLogger().trace('removeLink %s -> %s', from.wotb_id, to.wotb_id)                                                        
         wotb.removeLink(from.wotb_id, to.wotb_id);                                                                                

Explication : donc supprimer le lien dans le cas où il ne s’agit pas d’une opération CREATE, ni d’UPDATE. Mais quelle opération reste-t-il pour supprimer le lien ?

Voilà pourquoi je pense, qu’il faut creuser un peu plus, car j’ai peut-être tout simplement cassé le voyant du tableau de bord pour ignorer le problème.


#335

Oui et même ce code empêche la suppression des liens obsolètes dans wotb (car il n’existe que deux opérations pour op : CREATE et UPDATE, donc là le code wotb.removeLink devient mort), et donc introduit un nouveau bug de règle de distance lâche.

Sur la sortie standard elles y sont, mais pas dans le fichier de logs (encore un bug).


#336

Dans ce cas, il faut créer IDX_DELETE et l’assigner à certification.op lorsque la certifciation doit expirer.


#337

Pourtant le renvoi de port est bien configuré. Aaah satanée freebox.


#338

Cette opération n’existe pas, le protocole est agnostique de toute suppression de donnée car il n’est aucunement nécessaire d’en avoir une pour que celui-ci fonctionne.

Je vais donner ce midi la solution que j’ai trouvée, si j’ai le temps.

edit : pas eu le temps :grimacing: mais le test avec verrou reproduisant le problème est codé. Je le nettoie ce soir puis je publie.


#339

La version 1.7.18 a été buildée.

Je vais resynchroniser mon nœud sur g1-test.duniter.org, je vous invite ensuite à synchroniser sur le mien une fois l’accélération temporelle passée.

edit : done, par contre nous étions 6 issuers, donc mon nœud est bloqué s’il reste tout seul :slight_smile:


#340

J’ai fait la mise a jours et viens de lancer une sync basée sur g1-test.cgeek.fr, dés qu’elle sera finie nom nœud devrait calculer de nouveau :slight_smile:

EDIT : ça y ai j’ai calculé un bloc. Ceux qui veulent peuvent se sync sur mon noeud : ts.gt.librelois.fr (port 443)


#341

Je suis aussi rentré dans la course. C’est reparti. :slight_smile:


#342

La monnaie a rattrapé son retard.
Il y a des nœuds qui ont décroché :

silkaj -gt diffi
Current block: n°364367, generated on the 2019-05-03 09:12:26                                                                      
Generation of next block n°364368 possible by at least 2/2 members                                                                 
Common Proof-of-Work difficulty level: 59, hash starting with `000[0-4]*`                                                          
|    uid    |   match   |  Π diffi   |   Σ diffi |                                                                                 
|-----------+-----------+------------+-----------|                                                                                 
|    jyt    | 000[0-3]* | 4.9 × 10^4 |        60 |                                                                                 
| moul-test | 000[0-5]* | 4.1 × 10^4 |        58 |                                                                                 
                                                                                                                    
silkaj -gt blocks
Last 11 blocks from n°364357 to n°364367                                                                                           
|   block |       gentime       |     mediantime      |    hash    |    uid    |                                                   
|---------+---------------------+---------------------+------------+-----------|                                                   
|  364367 | 2019-05-03 09:12:26 | 2019-05-03 08:23:30 | 0000EF3EDD |    jyt    |                                                   
|  364366 | 2019-05-03 09:07:30 | 2019-05-03 08:19:10 | 0003599668 | moul-test |                                                   
|  364365 | 2019-05-03 09:07:20 | 2019-05-03 08:14:41 | 00005C4DED |    jyt    |                                                   
|  364364 | 2019-05-03 09:03:16 | 2019-05-03 08:10:10 | 0001F401CC |    jyt    |                                                   
|  364363 | 2019-05-03 09:00:58 | 2019-05-03 08:05:34 | 00010B24D0 |    jyt    |                                                   
|  364362 | 2019-05-03 08:59:58 | 2019-05-03 08:00:56 | 00010B62DA |    jyt    |                                                   
|  364361 | 2019-05-03 08:57:28 | 2019-05-03 07:56:25 | 00013681A7 |    jyt    |                                                   
|  364360 | 2019-05-03 08:56:51 | 2019-05-03 07:51:25 | 0001CD7535 | moul-test |                                                   
|  364359 | 2019-05-03 08:52:10 | 2019-05-03 07:46:24 | 0003E7A494 | moul-test |                                                   
|  364358 | 2019-05-03 08:40:22 | 2019-05-03 07:41:42 | 00008693FB |    jyt    |                                                   
|  364357 | 2019-05-03 08:40:17 | 2019-05-03 07:36:36 | 00014922E6 |    jyt    |                                                   

silkaj -gt blocks 500
Last 500 blocks from n°363868 to n°364367 from 3 issuers                                                                           
|     uid      |   blocks |   percent |                                                                                            
|--------------+----------+-----------|                                                                                            
|  moul-test   |      342 |      68.4 |                                                                                            
|     jyt      |      146 |      29.2 |                                                                                            
| scanlegentil |       12 |       2.4 |         
                                                                                   
silkaj -gt blocks 1000
Last 1000 blocks from n°363368 to n°364367 from 5 issuers                                                                          
|     uid      |   blocks |   percent |                                                                                            
|--------------+----------+-----------|                                                                                            
|  moul-test   |      645 |      64.5 |                                                                                            
|    cgeek     |      184 |      18.4 |                                                                                            
|     jyt      |      146 |      14.6 |                                                                                            
|    Elois     |       13 |       1.3 |                                                                                            
| scanlegentil |       12 |       1.2 |

En fait, cgeek a forké tout seul dans son coin. Donc, il y a deux monnaies de test plus réconciliables.


#343

Et bah je vais vous rejoindre dans ce cas :wink:

edit : sauf si vos nœuds ne sont pas accessibles … une adresse ?

edit 2 : ah ! le nœud de @jytou semble dispo, je m’y colle.


#344

@elois : au final j’ai raccroché le wagon formé par Moul et jytou. Peux-tu t’y resynchroniser aussi ?

@Moul : il semble que tu ne calcules plus de blocs sur cette branche, c’est voulu ?


#345

Il me semble que mon nœud calcule toujours :

Current block: n°364442, generated on the 2019-05-03 13:54:50
Generation of next block n°364443 possible by at least 1/1 members
Common Proof-of-Work difficulty level: 54, hash starting with `000[0-9]*`
|    uid    |   match   |  Π diffi   |   Σ diffi |
|-----------+-----------+------------+-----------|
| moul-test | 000[0-9]* | 2.5 × 10^4 |        54 |

2019-05-03T14:29:43+02:00 - info: Done: #364443, 0002CE452C6D1265CA3BE24A5FD865869CB53F30C6EB71E77FFC031FC00BD07D in 2091.95s (~105
36 tests, ~5.04 tests/s, using 4 cores, CPU 5%)                                                                                                                                                                              

Il a du fourcher par rapport à celui de jytou.


#346

Bon, je rejoins la branche, jytou cgeek sur g1-test.duniter.org.


#347

C’est fait :slight_smile:


#348

C’est parfait, la ĞTest tourne :slight_smile:


#349

Pour info : deux nœuds sont bloqués dans la résolution de fork au bloc#366173 :

Il y a eu un fork à ce moment-là (2 blocs trouvés à la même seconde par des nœuds différents) :

  • b#366173-0000765B
  • b#366173-0001105E

Suite à quoi les 2 nœuds sus-mentionnés sont tombés sur l’erreur suivante lors de la résolution de fork :

Fork resolution: suite 1/1 REFUSED block#366177: ruleIssuerIsMember

Voilà. Si quelqu’un veut bien investiguer en plus, notamment au regard de cette erreur, cela m’aiderait beaucoup :slight_smile:


#350

J’ai vu ce bug récemment, et à présent je vois plusieurs blocs de nombre qui s’incrémente refusé par mon nœud via cette règle.

2019-05-07T09:21:18+02:00 - info: SIDE Block #366665-0001D8D0 added to the blockchain in 1 ms
2019-05-07T09:21:18+02:00 - info: Block resolution: 1 potential blocks after current#366664...
2019-05-07T09:21:18+02:00 - error:  Error: ruleIssuerIsMember
    at Function.checkBlock (/home/gtest/duniter/app/lib/blockchain/DuniterBlockchain.js:72:19)                                     
    at <anonymous>                                                                                                                 
    at process._tickCallback (internal/process/next_tick.js:189:7)                                                                 
[…]
2019-05-07T09:23:04+02:00 - info: Block resolution: 1 potential blocks after current#366664...
2019-05-07T09:23:04+02:00 - info: [5B8iMAzq] ⬇ PEER 5B8iMAzq 366635-0
2019-05-07T09:23:04+02:00 - error:  Error: ruleIssuerIsMember
    at Function.checkBlock (/home/gtest/duniter/app/lib/blockchain/DuniterBlockchain.js:72:19)                                     
    at <anonymous>                                                                                                                 
    at process._tickCallback (internal/process/next_tick.js:189:7)                                                                 
2019-05-07T09:23:04+02:00 - info: Block resolution: 1 potential blocks after current#366664...
2019-05-07T09:23:04+02:00 - error:  Error: ruleIssuerIsMember
    at Function.checkBlock (/home/gtest/duniter/app/lib/blockchain/DuniterBlockchain.js:72:19)                                     
    at <anonymous>                                                                                                                 
    at process._tickCallback (internal/process/next_tick.js:189:7)                                                                 

Ça me fait vraiment penser à ce bug https://git.duniter.org/nodes/typescript/duniter/issues/1353


#351

L’erreur est toujours la même : le nœud n’arrive pas à passer au bloc#366665.

Quant au bug 1353, oui c’est possiblement lié.


#352

g1-test.duniter.org est bloqué à une heure de ce matin 9 mai.