# First ĞDev bug: Pending membership expiration remove membership even if it is no longer pending

**URL:** https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378
**Category:** ĞDev
**Created:** [30 May 2022 06:17 UTC](https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378 "2022-05-30T06:17:34Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [30 May 2022 06:17 UTC](https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378/1 "2022-05-30T06:17:34Z")

</div>

Hier soir en farfouillant le storage de la ĞDev, il m’a semblé identifier un 1er bug, j’ai ouvert une issue indiquant le scénario à dérouler pour potentiellement le reproduire:

> **[Pending membership expiration seem's to revoke a validated identity! (#51) ·...](https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/51)**
>
> write a test to reproduce write the fix

Ce matin je viens de rédiger un test automatisé qui reproduis bien le comportement non souhaité que j’avais identifié la veille:

> **[Fix #51 pending membership expiration seem s to revoke a validated identity...](https://git.duniter.org/nodes/rust/duniter-v2s/-/merge_requests/57/diffs?commit_id=8efd11a762241e5de96c884cf069f160bfb6310a)**
>
> Duniter v2 based on Substrate framework doc: https://doc-duniter-org.ipns.pagu.re/duniter/index.html

## Conséquences du bug

- Toute identité post genesis est révoquée 12 jours après sa confirmation
- Toute identité forgeron post genesis perd son status de forgeron 12 jours après l’avoir demandé

## Correctif

Très simple, il faut juste vérifier si le pending membership existe encore avant de trigger le handler (qui est écouté par la pallet duniter-wot qui déclenche alors la révocation de l’identité où la perte du statut forgeron selon le type de membership):

> **[Fix #51 pending membership expiration seem s to revoke a validated identity...](https://git.duniter.org/nodes/rust/duniter-v2s/-/merge_requests/57/diffs?commit_id=a7ae4e6fafbeb4bd04ffbd039de73a4a34586a4a)**
>
> Duniter v2 based on Substrate framework doc: https://doc-duniter-org.ipns.pagu.re/duniter/index.html

À court-terme il est possible de modifier manuellement le storage pour fixer les cas concernés, mais ça ne sera pas tenable dans la durée, il est donc nécessaire de releaser un runtime-101.

Ce sera sans doute l’occasion de faire voter les membres forgerons pour que vous puissiez voir concrètement comment se passe un changement de protocole via la gouvernance on-chain 🙂

Pour ce 1er runtime upgrade il me semble important qu’on se fasse une visio entre membres forgerons pour que je vous montre comment procéder, j’aimerais notamment que soit présent @cgeek @vit, @poka et @kapis , avez-vous des dispo week-end prochain ?

(@kapis as a smith member you have to participate to the votes on the protocol changes, so you are also invited to this remote meeting, we will try to translate as well as possible for you to understand).

**Sondage framadate à remplir: [Framadate](https://framadate.org/NVdYRW7AkdWa85bs)**

@1000i100 @HugoTrentesaux et @tuxmain je vous ai déjà montré comment voter lors des RML, c’était pour la trésorerie mais le processus est le même pour un runtime upgrade, vous êtes pour autant bienvenue à cette visio 🙂

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [30 May 2022 10:21 UTC](https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378/2 "2022-05-30T10:21:06Z")

</div>

Oui dispo. En plus ça me laissera le temps de scruter le correctif et les tests. Au passage je suis totalement en phase avec cette démarche corrective via les tests, c’est assurément une très bonne méthode.

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [30 May 2022 14:14 UTC](https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378/3 "2022-05-30T14:14:34Z")

</div>

> [@cgeek](#):
>
> cette démarche corrective via les tests, c’est assurément une très bonne méthode.

La 1ère fois que j’ai vu cette méthode (reproduire le bug via un test avant de le corriger) c’était par toi dans Duniter v1 justement, mais j’avoue qu’à l’époque je n’étais pas entièrement convaincu 😅  
Entre-temps certaines expériences pro ainsi que des discussions avec d’autres dev (dont @1000i100) m’ont progressivement convaincu que c’est une méthode pertinente dans certains cas, et notamment pour le protocole d’une blockchain.  
En plus c’est ce qu’on nous demande dans mon boulot pro actuel, donc je m’y suis habitué 🙂

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [31 May 2022 13:02 UTC](https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378/4 "2022-05-31T13:02:44Z")

</div>

J’ai regardé avec attention les commits : OK, c’est limpide.

Cela m’a inspiré pour l’élaboration (en cours) d’une stratégie de test, je bosse le sujet.

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [1 June 2022 23:56 UTC](https://forum.duniter.org/t/first-gdev-bug-pending-membership-expiration-remove-membership-even-if-it-is-no-longer-pending/9378/5 "2022-06-01T23:56:41Z")

</div>

> [@elois](#):
>
> Sondage framadate à remplir: [Sondage - smiths runtime-101 - Framadate](https://framadate.org/NVdYRW7AkdWa85bs)

D’après le sondage c’est vendredi soir que le plus de monde est disponible, la visio aura donc lieu vendredi à 20h, plus d’informations sur le sujet dédié au runtime 101: [ĞDev: runtime-101](https://forum.duniter.org/t/gdev-runtime-101/9406)
