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.
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).
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 mais le test avec verrou reproduisant le problème est codé. Je le nettoie ce soir puis je publie.
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%)