Assistance technique

Problème lors de la duplication d'une ressource test

 
Avatar Steve Ottevaere
Re: Problème lors de la duplication d'une ressource test
 

Voila, je me permet de faire évoluer la situation car j'ai trouvé du nouveau :

J'ai lancé le script "admin/tool/health" et il détecte des problèmes de consistance au niveau des "tests" et entre autre les "tests" qui sont justement contenu dans ce fameux cours qui pose problème.

Je m'y penche et je vois avec l'enseignant pour réorganiser ses questions en gardant une cohérence des données.

copie-ecran-moodle

 
Moyenne des évaluations  -
Avatar Steve Ottevaere
Re: Problème lors de la duplication d'une ressource test
 

Voila je crois avoir identifié l'érreur.

Il s'agit d'un bug connu et documenté ici MDL-63260


Une enseignante a dupliqué un "test" avec une question de type "random" et cela a engendré l'écriture d'un nombre énorme de ligne (et c'est rien de le dire) dans la table mdl_question.

Le scenario qui a été fait par l’enseignante était celui-ci :

- Créer un test T1 avec une question random

- Dupliquer le test T1, le renomer en T2, modifier le test T2

- Dupliquer le test T2, le renomer en T3, modifier le test T3

et ainsi de suite



Apparemment à chaque tentative de duplication du test (qui se solde par un échec), le nombre de ligne écrite en DB est exponentiellement croissant.


select count(*) from mdl_question

Le nombre de ligne dans ma table est de 1243378 !!!


select count(*) from mdl_question where qtype='random'

Le nombre de ligne de type "random" est  1227160


Au début de mon investigation sur ce problème, j'avais moi même avec mon compte administrateur de moodle tenté de dupliquer le test avec un échec.


select count(*) from mdl_question where qtype='random' and createdby=2

Une petite recherche dans la table me montre que mon utilisateur administrateur de Moodle (dont l'Id est 2) a créé à lui seul 919684 lignes.


Pour nettoyer cette table, pensez-vous que je peux effacer ces lignes sans compromettre encore plus la cohérence de la DB?


Steve.






 
Moyenne des évaluations Utile (2)
Avatar Luiggi Sansonetti
Re: Problème lors de la duplication d'une ressource test
Développeurs de pluginsMoodleurs particulièrement utilesTesteursTitulaires du Moodle Course Creator CertificateTraducteurs

Bonjour

Je ne réponds pas, mais je voulais juste dire merci pour avoir été jusqu'au bout de la recherche est d'avoir trouvé qu'il s'agissait d'un bug avéré

Oui

Maintenant, l n'y a plus qu'à.

Pour la suppression, dans le ticket mentionné, à la fin, il y en a un qui donne sa requête mais bon, je ne suis pas du tout spécialiste...

 
Moyenne des évaluations  -
Avatar Patrick Lemaire
Re: Problème lors de la duplication d'une ressource test
Moodleurs particulièrement utiles

Bonjour Steeve,

Tu écris :

select count(*) from mdl_question where qtype='random' and createdby=2
Une petite recherche dans la table me montre que mon utilisateur administrateur de Moodle (dont l'Id est 2) a créé à lui seul 919684 lignes.
Pour nettoyer cette table, pensez-vous que je peux effacer ces lignes sans compromettre encore plus la cohérence de la DB?

Je pense qu'il n'est jamais bon de supprimer des éléments directement dans la base de données. En effet, d'autres objets sont probablement liés à ces questions et ils seront alors orphelins. Comme on peut le voir sur le schéma de la structure de la Base de données (http://www.examulator.com/er/), la table mdl_question est très utilisées. On peut avoir plus de précision ici : https://docs.moodle.org/dev/Question_database_structure

Database question structure

Pour résumer, je n'en ferai rien pensif

A bientôt,
Patrick

 
Moyenne des évaluations Utile (2)
Avatar Steve Ottevaere
Re: Problème lors de la duplication d'une ressource test
 

Bonjour Patrick,

 

Merci pour ton avis et pour le schéma des tables.

 

Pour info :

Avant de lire ton email, j'avais déjà pris l'initiative de nettoyer la table (en tournant 7 fois mon doigts autour de la souris) j'espère que je ne le regretterai pas...

Dans notre cas, la situation devenait assez critique et je ne pouvais pas laisser la situation dans l'état.

La table étant "polluée" de 1.254.579 enregistrements (plus d'un million de lignes).

Ce qui engendrait des lenteurs dans le traitement de requêtes sur cette table et cela avait un impact négatif sur la charge du serveur.

En plus, d'après ce que je comprends du bug, à chaque duplication les données augmentent exponentiellement, je crois que si le prof tentait de dupliquer de nouveau son "test", on passait à plusieurs dizaines de millions d'enregistrements supplémentaires, ce qui aurait encore empiré la situation (la dernière tentative de duplication avait engendré 800.000 lignes).

Depuis l'effacement des lignes, on retrouve une charge serveur tout à fait normale.

 

Pour info, j'ai utilisé la requête qui est proposée dans le rapport de bug (MDL-63260) et qui n'efface que des enregistrements qui sont orphelins. En effet, effacer sur base de ma requête simpliste de mon précédent post n'était surement pas une bonne idée.


D'autres utilisateurs touchés par ce bug ont "forké" le type de question random en y ajoutant une tâche planifié Moodle qui détecte et efface les enregistrements orphelins, voir la discussion ici : https://moodle.org/mod/forum/discuss.php?d=377361#p1521842)

 

Toutefois, je suis de ton avis, cette manipulation comporte des risques. Il est toujours préférable de la tester dans un environnement de test.

Si un utilisateur est confronté à ce problème mais n’a pas d’impact négatif sur les performances, je préconiserais de laisser en l'état en gardant cela à l’œil et en espérant qu'une procédure officielle de Moodle détecte ces enregistrements et efface les enregistrements fantômes car surcharger les tables avec un tel nombre d’enregistrements n'est pas non plus une situation idéale.


En tout cas merci pour les retours et j'espère ce cette discussion pour être utile à d'autres.

 

Steve.


 
Moyenne des évaluations Utile (1)