Pogues icon indicating copy to clipboard operation
Pogues copied to clipboard

Computed variables are lost

Open romaintailhurat opened this issue 2 years ago • 6 comments

At least two users have lost all their questionnaire computed variables. It's a huge bug because there's no real backup for this once a questionnaire is saved.

Currently, we don't have a clear idea of the path to this bug, extensive research must be done:

  • to reproduce the bug
  • to identify the code part responsible for this

romaintailhurat avatar May 11 '22 08:05 romaintailhurat

This is currently more of a background task to check for reproducible paths and buggy code.

romaintailhurat avatar May 11 '22 12:05 romaintailhurat

Trying to reproduce the bug in this questionnaire.

romaintailhurat avatar Jun 01 '22 13:06 romaintailhurat

@loichenninger stumble upon a piece of code that under certain circumstances can delete computed variables. This trail is currently not validated, but nonetheless it's a trail. It implies the use and modification of loops and filters.

romaintailhurat avatar Jun 01 '22 13:06 romaintailhurat

Too complicated (and time consuming) to find the buggy path in the application code. Next strategy is to alert the user (via a pop-up or warning message) that they lost all their computed variables. This message ask the user to send a mail to the product team in order to identifiy the previous actions (and so help with a diagnosis).

romaintailhurat avatar Jun 30 '22 12:06 romaintailhurat

Message to be displayed →

🇫🇷 Il n'y a plus de variable calculée dans votre questionnaire. Si ce n'est pas une action voulue de votre part, il s'agit probablement d'une erreur de l'application. Dans ce cas, veuillez contacter au plus vite l'équipe de l'atelier de conception pour que nous corrigions ce problème. Par ailleurs, si vous quittez votre questionnaire maintenant sans le sauvegarder, vous retrouverez les variables calculées en retournant sur le questionnaire.

with this mailto on "l'équipe de l'atelier de conception":

mailto:[email protected],[email protected], [email protected], [email protected]

romaintailhurat avatar Jul 05 '22 07:07 romaintailhurat

Bug when creating a new questionnaire the second time. WIP.

romaintailhurat avatar Jul 12 '22 07:07 romaintailhurat

@BulotF @ORogel La solution d'alerte ne fonctionne visiblement pas, les nouvelles occurrences du bug ne l'ont jamais levées. Il faut que l'on rediscute de la stratégie d'élimination de ce bug :(

romaintailhurat avatar Feb 28 '23 08:02 romaintailhurat

An interesting news: this problem existed six years ago and was corrected. Probably something broke this fix. François will follow this trail.

romaintailhurat avatar Aug 29 '23 07:08 romaintailhurat

🇫🇷 Il y a 6 ans, il y a eu un problème dans la gestion du store Redux pour les variables externes et calculées : Le fonctionnement attendu était de recopier le state et le surcharger avec les variables modifiées. Au lieu de ça, le state était écrasé avec les variables calculées et modifiées fournies à l'étape update.

Ainsi lorsqu'on modifiait un composant, les variables externes et calculées étaient effacées.

La correction mise en place il y a 6 ans a consisté à prendre les variables calculées et externes du store et à les recopier lors de l'appel à la modification d'un élément.

Depuis, les variables externes et calculées sont récupérées et envoyées lors de l'appel à la modification d'un élément.

Sauf dans au moins un cas.

Le cas identifié nécessite au moins 3 boucles : La boucle 3 est liée à la boucle 2 (qui est donc une boucle principale) La perte des variables externes et calculées peut arriver lorsque la boucle 2 devient liée à la boucle 1 (la boucle 3 devient alors liée à la boucle 1 au lieu de la 2)

Je n'ai pas réussi à identifier d'autre cas, mais je ne garantis pas qu'il n'en reste pas.

2 possibilités de correction :

  • modifier uniquement le cas rare identifié
  • corriger le comportement de modification des composants vis à vis du store Redux. Il faut alors se méfier avec toutes les modifications, car le bout de code est également utilisé dans le cas des suppressions (et conserver le state ne permet pas d'en enlever des éléments) : opportunité de rendre le code nettement plus clair, mais risque extrêmement fort de régressions (la liste des cas à tester loin d'être négligeable)

🇬🇧 You can use a translator, as I would have to...

BulotF avatar Sep 25 '23 10:09 BulotF

🇬🇧 We go for the first solution: patching for this wrong behavior only.

🇫🇷 On part sur la première solution de correction du cas rare.

romaintailhurat avatar Sep 25 '23 11:09 romaintailhurat

Situation source du bug finalement trouvée grâce à une conceptrice : le déplacement d'un élément de questionnaire (séquence ou question a priori) pour lequel il existe un filtre dont il est :

  • soit le premier élément
  • soit le dernier élément
  • mais pas l'unique élément

Autre cas trouvé (mais a priori innocent des cas remontés par les concepteurs) :

  • la boucle C est basée sur (basedOn) la boucle B
  • On modifie la boucle B pour la baser sur la boucle A

BulotF avatar Feb 23 '24 15:02 BulotF