chamilo-lms icon indicating copy to clipboard operation
chamilo-lms copied to clipboard

Race condition dans lp_controller.php

Open meuhland opened this issue 6 years ago • 2 comments

Juste pour valider ma logique j'aimerais discuter de ce cas avec la communauté :)

Avec un parcours d'une certaine taille (ce n'est pas 100% consistant).

Lors de l'ajout d'une nouvelle ressource dans le parcours en mode édition (donc un drag de droite à gauche) sous certaines conditions l'ordre d'affiche des ressources (à gauche) est perdu.

Après analyse du flow des opérations il semble que ça soit une race condition...

Lors du drop 2 events arrivent à courte interval "receive" et "update" mais il semble qu'update qui fait buildLPtree qui post le nouvel ordre à lp.ajax.php (case : update_lp_item_order) soit executé avant que le DOM ne soit complètement mis à jour par le get à lp.ajax.php (case: add_lp_item) dans l'event "receive".

Étant donné que de toute façon c'est de l'exécution en double vu le fait que add_lp_item retourne le HTML au complet de la liste de gauche en synchrone la solution simple serait de simplement mettre un if sur "ui.sender === null" dans le update pour éviter la double exécution.

**Serveur

  • Système d'exploitation : Ubuntu 18.04 / Windows Server (le bogue est dans le javascript)
  • Version de Chamilo: 1.11.10 et 1.11x latest
  • Version de PHP: 7.3

meuhland avatar Aug 28 '19 12:08 meuhland

Bonjour @meuhland D'abord désolé pour le retard. Ensuite je valide ta logique. Oui, c'est fort possible. Est-ce que tu as pu, depuis, valider cette théorie?

ywarnier avatar Jun 20 '20 01:06 ywarnier

Ça me semblait stable depuis la mise en place du fix dans mon environement. (Je n'ai pas réentendu parlé de ce bogue-là)

meuhland avatar Jun 23 '20 18:06 meuhland