Skip to content
Snippets Groups Projects

fix: disable UD when membership removed

Merged Pascal Engélibert requested to merge tuxmain/fix-expire-ud into master
2 unresolved threads
  • Désactiver le DU de l'identité quand son elle perd son statut de membre.
  • Retirer un Copy parce que je n'étais pas sûr de modifier l'original ou une copie.

fixes #272 (closed)

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • 59 59 ) -> Result<R, E> {
    60 60 pallet_identity::Pallet::<T>::try_mutate_exists(key, |maybe_idty_data| {
    61 61 if let Some(ref mut idty_data) = maybe_idty_data {
    62 let mut maybe_first_eligible_ud = Some(idty_data.first_eligible_ud);
    62 let mut maybe_first_eligible_ud = Some(idty_data.first_eligible_ud.clone());
    63 63 let result = f(&mut maybe_first_eligible_ud)?;
    64 64 if let Some(first_eligible_ud) = maybe_first_eligible_ud {
    65 65 idty_data.first_eligible_ud = first_eligible_ud;
    66 66 }
    67 67 Ok(result)
    • Comment on lines -62 to 67

      I find this code a bit difficult to read. I agree that the removal of Copy increases readability a bit, may this be improved further? It is not clear that having maybe_first_eligible_ud become None after call of f() does not make sense and that this will not update the value of idty_data.first_eligible_ud.

      We could:

      1. remove the FirstEligibleUd typing layer
      2. make first_eligible_ud field of IdtyData be directly a Option<UdIndex>

      Not sure it's worth it though.

      We can simply add a note:

      Suggested change
      62 let mut maybe_first_eligible_ud = Some(idty_data.first_eligible_ud.clone());
      63 let result = f(&mut maybe_first_eligible_ud)?;
      64 if let Some(first_eligible_ud) = maybe_first_eligible_ud {
      65 idty_data.first_eligible_ud = first_eligible_ud;
      66 }
      67 Ok(result)
      62 let mut maybe_first_eligible_ud = Some(idty_data.first_eligible_ud.clone());
      63 let result = f(&mut maybe_first_eligible_ud)?;
      64 if let Some(first_eligible_ud) = maybe_first_eligible_ud {
      65 idty_data.first_eligible_ud = first_eligible_ud;
      66 }
      67 // a f() mutating maybe_first_eligible_ud to None would not make sense
      68 Ok(result)
    • Please register or sign in to reply
    • Je ne sais pas à quel point la couche de typage FirstEligibleUd nous aide ou nous embrouille. Il faudrait également ajouter un live test qui vérifie que first_eligible_ud.0 vaut Some pour les IdtyStatus::Member et seulement eux.

      Ce test devrait échouer pour la gdev car maintenant le storage est incohérent.

    • Je m'aperçois que la différence entre IdtyData::new() et IdtyData::default() est importante : le premier est initialisé avec un premier DU éligible au genesis alors que le second ne peut pas réclamer de DU.

      Il faut fait attention à ne pas initialiser une identité non membre avec new sous peine qu'elle puisse réclamer un DU. Donc il doit y avoir un deuxième bug où les identités non membres du genesis ont droit au DU.

      → oui, autre bug critique #273 (closed)

    • Please register or sign in to reply
  • Hugo Trentesaux approved this merge request

    approved this merge request

  • Cédric Moreau approved this merge request

    approved this merge request

  • Juste une remarque sur la forme (pour les prochaines fois) : pour faciliter la relecture, découper en deux commits : un pour le test (qui échoue) et un pour le correctif (où le test passe). C'est une façon de faire assez répandue, je la pratiquais sur Duniter v1 et Eloïs m'a rapporté que c'était aussi la façon de faire chez Moonbeam par exemple.

    Pour le relecteur il suffit alors de vérifier la CI ou bien de se positionner sur le commit avec le test pour vérifier que le test fait bien ce qui est attendu. Là j'ai dû manipuler le code pour faire la vérification, alors que ça ne coûte pas grand-chose de le faire au commit.

  • added 2 commits

    • fc1fe8f8 - 1 commit from branch master
    • 853c81f9 - fix: disable UD when membership removed

    Compare with previous version

  • Hugo Trentesaux added 3 commits

    added 3 commits

    Compare with previous version

  • Hugo Trentesaux added 2 commits

    added 2 commits

    • c4b3f8c5 - 1 commit from branch master
    • e591ec00 - fix: disable UD when membership removed

    Compare with previous version

  • mentioned in commit d17dcd65

  • Please register or sign in to reply
    Loading