Problème "Identifiant de module de cours non valide"

Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
Nombre de réponses : 27

Bonjour

J'ai un collègue qui sur son cours après avoir tenté ce matin une duplication d'un test, se retrouve avec un "Identifiant de module de cours non valide".

Le problème apparait uniquement sur les tests qui étaient déjà présents ou lors de création d'un test. Tout le reste du cours est intact, ainsi que les autres cours de la plateforme.

J'ai vu qu'il y avait déjà eu un problème identique avec la 3.6.3, et la correction se faisait simplement en faisant la mise à jour de la version suivante.

Vous avez des conseils ? J'ai un sauvegarde quotidienne de la bd donc je peux écraser ce qui a été fait se matin (il n'y avait rien d'important), faire une mise à jour sur la 3.11.3 ? Je penche plus sur écraser la db.

Moodle 3.11.2+

MariaDB 10.3.31

Debian 10 

Amicalement TT

Moyenne des évaluations  -
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles
Bonjour,

Puisque vous utilisez Moodle 3.11.2+, le problème n'est peut être pas identique à celui qui affectait Moodle 3.6.
J'essaierais d'abord de voir ce que donne le passage en mode débogage.

Christian
En réponse à Christian Bocquet

Re: Problème "Identifiant de module de cours non valide"

par Jean-Gabriel DEPINOY,
Avatar Moodleurs particulièrement utiles
Bonjour Thierry,
Sinon, à tout hasard, as-tu essayé de saisir tonadressemoodle/admin/tool/health/ ?
Il me semble que dans ce cas de figure, Moodle t'indique ce qui ne convient pas dans tes index.
En réponse à Jean-Gabriel DEPINOY

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
Je ne connaissais pas. Je tente !

------
Il a détecté 2 problèmes.
Mais le 2ème est liè à un autre cours.
Annexe Screenshot_20211011_151934.png
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Mary Cooch,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs
Je ne comprends pas trop bien le code (enfin, pas du tout!), mais je pense que c'est la même erreur qu'ici https://tracker.moodle.org/browse/MDL-72566
En réponse à Mary Cooch

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
Du coup, la méthode pour corriger le problème
  • je remets l'ancienne version de la base de données et je fais la mise à jour
  • ou je fais juste la mise à jour ?
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Jean-Gabriel DEPINOY,
Avatar Moodleurs particulièrement utiles

Il faudrait que tu regardes dans ta base de données la table mdl_question_categories:

Peux-tu filtrer les données de cette table en n'affichant que les enregistrements qui ont pour valeur du champ "contextid" 25 et 2610.

Normalement, dans une même arborescence, les catégories et sous-catégories ont la même valeur de "contextid".

Par exemple, si tu as à la racine de ton site deux catégories de questions: "Français" et "Mathématiques" et que tu as des sous-catégories "Grammaire" et "Orthographe" pour le français et "Algèbre" et "Géométrie" pour les mathématiques, tu devrais retrouver dans les enregistrements de ta table les éléments suivants (j'ai pris des valeurs "id" et "contextid" aléatoires) :

id name contextid parent
35 top 10 0
68 français 10 35
114 Grammaire 10 68
159 top 12 0
236 français 12 159
 259  Orthographe 12   236
 276 top   15  0
 284  Mathématiques  15  276
 287  Algèbre  15  284
 298  top  18  0
 302  Mathématiques  18  298
 307  Géométrie  18  307
La colonne "parent" permet de retrouver l'arborescence des catégories de questions et la valeur "contextid" permet de garantir ce lien car les valeurs de la sous-catégorie et de la catégorie parente doivent être les mêmes.
Ainsi, dans les 3 premières lignes de mon exemple (qui ont donc le même contextid), on peut voir que la catégorie principale est "top" (car parent=0), ensuite, la sous-catégorie est "français" car la catégorie parent a pour Id 35 (soit la ligne correspondant à "top"), puis la sous-catégorie du français est "Grammaire" car la catégorie parent a pour Id 68 (soit la ligne correspondant à "français"). Et ainsi de suite...

Si tu peux nous mettre une copie des enregistrements demandés, ça pourrait peut-être permettre de voir ce qui cloche.

En réponse à Jean-Gabriel DEPINOY

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,

et voilà ce que cela donne.

Après, c’est sauf erreur de ma part, un qcm qui est localisé dans un cours qui fonctionne.

ça veut dire que j'ai 2 problèmes celui-là et celui du cours avec le message d'erreur. Ou alors c'est la question du cours d'à coté qui fait planter l'autre cours.... Rho la vache, ça se complexifie lol.

Annexe id25.png
Annexe id2610.png
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Jean-Gabriel DEPINOY,
Avatar Moodleurs particulièrement utiles
Pour moi, le problème vient de ta ligne 856. La valeur "parent" devrait être 1et non pas 830.
Normalement, il n'est pas trop bon de faire des modifications directement dans les tables, mais vu qu'il s'agit que d'un enregistrement, tu peux modifier cette valeur et voir si ça résout ton problème. Dans le cas contraire, tu pourras remettre la valeur 830 au lieu de 1.
Pour ton autre problème, quel est le message d'erreur que tu as pour ton cours ?
En réponse à Jean-Gabriel DEPINOY

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
ok je vais tenter.
Tu as la capture juste en dessous invalidcoursemodule et juste sur les quizz
Mary semble pencher pour ce probleme https://tracker.moodle.org/browse/MDL-72566
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
À première vue, c’est bien ça. Je n'ai plus de message d'erreur.

Merci pour le coup de main.
En réponse à Christian Bocquet

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,

Du coup ça donne quelques détails supplémentaires.

Mais j'avoue que je ne sais pas quoi répondre.

Annexe Screenshot_20211011_124540.png
Annexe Screenshot_20211011_125600.png
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
Bon pour celui-là de problème, par sécurité j'ai mis la BD de sauvegarde de dimanche. Conclusion le problème n'est plus actif.
Bonne nouvelle pour moi, la sauvegarde marche bien.

Du coup, si c'est bien ce problème https://tracker.moodle.org/browse/MDL-72566 faut que je patiente jusqu'à la version 3.11.4 ?
On va retenter avec le collègue l'expérience dans le bac à sable que l'on a.
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide"

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles
Bonjour,
Et vérifiez le bon fonctionnement de votre cron. Il devrait être lancé toutes les minutes...
Daniel
En réponse à Daniel Méthot

Re: Problème "Identifiant de module de cours non valide"

par Thierry Talbert,
à priori la bonne ligne est dans le crontab

# cron moodle
*/1 * * * * /usr/bin/php /var/www/moodle/admin/cli/cron.php >/dev/null

L'exécution à la main ne donne aucun message d'erreur. Les messages et notifications en tout genre (trop selon les étudiants) arrivent dans la minute. Le problème n'est-il pas qu'apache n'est pas proprio des dossiers chez moi mais le root et que du coup il n'aime pas ?
Je ne m'inquiète pas trop pour celui-là du coup.
En réponse à Thierry Talbert

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,

Fonctionnant avec Moodle 3.11.4, j'ai également reçu récemment des signalements du type "Identifiant de module de cours non valide" (invalidcoursemodule), lors de la création d'activité Test, au moment d'enregistrer.

J'ai réussi à le résoudre très facilement en utilisant l'outil en ligne de commande permettant de vérifier et réparer les séquences de cours/modules.

Précisément, depuis le dossier de Moodle, j'ai lancé la commande suivante (afin de ne pas afficher les milliers de cours corrects) :
php admin/cli/fix_course_sequence.php --courses=* | grep -v 'is OK'
Et j'ai ensuite lancé la correction des cours posant problème :
php admin/cli/fix_course_sequence.php --courses=xxxxx, yyyyy, zzzzz --fix
Mais effectivement, il est possible de tout faire en une seule commande, comme expliqué dans la documentation.

Par contre, dans le même cours qui avait posé problème, après correction, et seulement quelques jours plus tard, le problème s'est de nouveau posé, et je l'ai corrigé à nouveau. Je ne sais pas vraiment ce qui a pu provoquer ce souci triste

J'aurais tendance à dire que, pour qui a accès à la ligne de commande sur son serveur, c'est le genre de vérification à lancer régulièrement, au cas ou...

Séverin

Moyenne des évaluations Utile (4)
En réponse à Séverin Terrier

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par didier cadiou,
Bonjour à tous, bonjour Séverin.
Je viens de passer 15 jours sur ce message d'erreur à analyser le problème dans le code en pas à pas. Sur notre Moodle, le problème se manifeste à la copie d'un quiz d'un cours à un autre via le panier d'activités.
J'ai finalement pu identifier toutes les conditions qui font que le bug se produit sous cette forme.
C'est très tordu, en fait il y en a 4. Je les ai détaillé dans le tracker que j'ai créé pour l'occasion : https://tracker.moodle.org/browse/CONTRIB-8785.
J'ai pu le reproduire dans des Moodles tout neufs et initialement vides et dans différentes versions de la 3.11. En revanche je ne l'ai pas sur la 3.9 et sur la 4.0dev.
Suite à ces investigations, nous avons :
  • créé le tracker déjà évoqué
  • communiqué auprès de nos enseignants
    • de ne pas faire d'import de quiz dans des sections cachées (au moment de l'import) ,
    • de nous prévenir s'ils ont le bug, pour qu'on puisse lancer le script fix_course_sequence.php que tu mentionnes sur leur espace cours et ainsi éviter le "sur-accident" (problème d'accès au carnet de notes, défaut d'enregistrement des tentatives de quiz, plantage de certains crons...)
Moyenne des évaluations Utile (3)
En réponse à didier cadiou

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par didier cadiou,
Je viens de trouver une cinquième condition nécessaire pour que le bug se produise : le numéro de section (champs `course_modules.section` en base) du module importé doit être différent dans le cours source et dans le cours de destination. Ça s'explique car cette différence va provoquer le déplacement du module d'une section où il atterrit initialement, vers la section choisie. Ce déplacement se fait en fin de copie et c'est justement pendant ce déplacement qu'il va éventuellement recalculer les notes et planter parce qu'il ne trouve le module dans aucune séquence (champs `course_sections.sequence` en base) puisque le module est en "transit" entre 2 sections, donc dans aucune.

Pour résumer les 5 conditions requises pour que le bug apparaisse, comme on l'observe chez nous, et laisse derrière lui des ruptures d'intégrité section versus module et plus tard des erreurs 'id de module de cours invalide' :
  • l'élément importé est un quiz avec un critère d'achèvement sur l'obtention d'une note
  • au moins un élément noté en plus de celui importé, dans le cours source
  • il existe au moins une note déjà attribuée à un étudiant dans le cours de destination
  • l'import depuis le panier d'activité se fait dans une section cachée dans le cours de destination
  • le numéro de section du module importé est différent dans le cours source et dans le cours de destination
Je sais qu'un bug qui ne se produit qu'en présence d'une combinaison de 5 conditions ça peut paraître hautement improbable et donc peu dangereux, sauf que prise une à une ces conditions ont chacune une probabilité d'existence non négligeable, si bien que la combinaison finale n'est pas aussi rare qu'on pourrait l'imaginer. D'ailleurs c'est pour ça qu'on l'a chez nous (à Caen). On a mis à disposition des enseignants un cours modèle avec des sections préconfigurées à importer (par le panier d'activités) dans les cours où des épreuves en ligne doivent avoir lieu soit avec des devoirs ou des quiz. Ce cours modèle coche déjà 3 des 5 cases. Il reste à avoir un cours de destination avec déjà des notes attribués (fréquent) et un numéro de section différent du cours source (très probable également).

Avant de connaître cette 5ième condition j'ai tiré des conclusions erronées sur les versions affectées. J'ai donc refait mes tests en faisant attention au numéros de section et j'observe qu'avec la 3.9 le bug existait déjà mais produit peu de dégâts, alors qu'avec les 3.11 et plus (4.0dev y-compris), l'impact est majeur (surtout le non enregistrement des tentatives de quiz en période d'examens...).
Pour finir, Mary Cooch évoque https://tracker.moodle.org/browse/MDL-72566. J'ai bien regardé ce tracker, mais malheureusement le patch qui en a découlé est déjà intégré dans certaines des versions de Moodle (3.11.4+ par exemple) que j'ai vu avec le bug. Le patch ne corrige donc pas ce problème-ci.
En réponse à didier cadiou

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Didier,
Dans le Tracker, tu décris un problème lié à « Sharing Cart ». Est-ce que tu as testé en dupliquant le Test dans des conditions similaires via la méthode native ?

À bientôt,
Patrick
En réponse à Patrick Lemaire

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par didier cadiou,
Salut Patrick.

J'imagine que tu penses à la sauvegarde/restauration. J'ai testé effectivement et je n'ai pas vu le bug. Maintenant compte tenu du nombre de conditions nécessaires pour que le bug survienne avec le panier d'activités, compte tenu aussi du fait que le panier d'activité utilise une partie des fonctions de la sauvegarde restauration native, il n'est pas impossible que le bug existe aussi avec sauvegarde/restauration mais que je ne me sois pas trouvé dans des conditions propices pour le voir.
En réponse à Séverin Terrier

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Thierry Talbert,
je ne connaissais pas cette commande.
Merci pour l'information !

Je pensais que l'on avait fait une mauvaise manip., mais ça a l'air un peu plus complexe comme problème.
En réponse à Séverin Terrier

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par didier cadiou,
Bonjour.

Comme nous avons ce problème de bug sur le panier d'activités et que c'est problématique chez nous car ça dégrade les espaces cours où il est utilisé pour récupérer un kit épreuve et que ça menace le bon déroulement des épreuves en question, nous avons décidé de lancer le script fix_course_sequence très souvent. Nous le lançons sans l'option '--fix' toutes les heures avec un petit script et avec l'option '--fix' une fois chaque nuit.
Le petit script permet d'envoyer un mail aux admins plateforme si une erreur est détecté, ce qui nous permet d'intervenir ponctuellement sur l'espace cours en journée, c'est-à-dire de lancer la correction en ciblant l'espace en défaut.
Ça fait maintenant une semaine ou deux que nous avons ça en place et 2 ou 3 nouveaux cours en défaut sont détectés chaque jours. Quelque fois cela corrèle avec une demande d'assistance d'enseignants, mais la plupart du temps les soucis ont l'air de passer sous le radar (ce qui ne veut pas dire que les problèmes n'émergeraient pas ultérieurement).
Moyenne des évaluations Utile (1)
En réponse à didier cadiou

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles
Bonjour,
"Comme nous avons ce problème de bug sur le panier d'activités "
Chez moi aussi, l'activation de ce plugin, pourtant bien utile, provoque des figeages d'écran avec impossibilité de poursuivre parfois.
Du coup il est généralement désactivé et je le réactive en cas de besoin.
Mais comme je suis presque souvent le seul concerné... rien de grave.
En réponse à Daniel Méthot

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Thierry Talbert,
Question stupide, il est rangé à quel endroit ce script ?

[Modifié]
Ayé je l'ai trouvé, dossier moodle/admin/cli
En réponse à Séverin Terrier

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Steve Ottevaere,

Bonjour,

Juste pour signaler que nous avons rencontré le même problème sur une 3.11.2
Et que les scripts tel que communiqué par Séverin a rétabli la situation.
Merci pour le tuyau sourire


Précisément, depuis le dossier de Moodle, j'ai lancé la commande suivante (afin de ne pas afficher les milliers de cours corrects) :
php admin/cli/fix_course_sequence.php --courses=* | grep -v 'is OK'
Et j'ai ensuite lancé la correction des cours posant problème :
php admin/cli/fix_course_sequence.php --courses=xxxxx, yyyyy, zzzzz --fix

On planifie donc une petite mise à jour prochainement car apparemment le bug est corrigé sur la 3.11.4.

Merci,

Steve.

En réponse à Steve Ottevaere

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par didier cadiou,
Bonjour.

Malheureusement j'ai bien peur que le bug ne soit pas corrigé sur la 3.11.4, en tous cas celui que nous avons détecté chez nous avec le panier d'activités (voir https://tracker.moodle.org/browse/CONTRIB-8785). Un identifiant de module de cours non valide peut se produire dans différents scénarios et à cause de différents bugs. Celui qu'on a identifié ici se produit dans des conditions (5 au total) bien précises et qui concerne le panier d'activités.

J'ai testé plusieurs versions de Moodle, voici mes résultats :

  • 2020061500.00 (3.9 (Build: 20200615)) : Un message d'erreur furtif se produit, mais ne bloque pas l'import, ni ne génère de rupture d'intégrité module vs section en base
Pour toutes les versions testées suivantes, en revanche, le bug se produit (donc y-compris pour Moodle 4)

  • 2021051703.00 (3.11.3 (Build: 20210913))
  • 2021051703.10 (3.11.3+ (Build: 20211026))
  • 2021051704.04 (3.11.4+ (Build: 20211123))
  • 2021112300.00 (4.0dev+ (Build: 20211123))
En production actuellement nous sommes sur Moodle 3.11.4+ (Build: 20211210) et le bug est toujours là. Tous les jours nous avons une poignée de cours avec des rupture d'intégrité.
En réponse à didier cadiou

Re: Problème "Identifiant de module de cours non valide" (invalidcoursemodule)

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,

Juste pour signaler que nous utilisons actuellement la version 3.11.5+ du 02/02/2022, et que nous rencontrons effectivement toujours ce problème, relativement régulièrement. Mais a priori sur des cours différents à chaque fois.

Séverin