Closed ralferlebach closed 1 week ago
@ralferlebach Ist hier die aktuelle Version mit git tag 0.9.4-rc8 verwendet worden? In dieser Version wird die Exception nämlich erst in Zeile 330 (nicht 328) geworfen: https://github.com/Wunderbyte-GmbH/moodle-local_catquiz/blob/0.9.4-rc8/classes/teststrategy/feedbacksettings.php#L330 Und in dieser Version wird auch der Standardfehler standardmäßig gesetzt.
Das war die Version, die am Dienstag im Einsatz war:
Das ist ja merkwürdig. Kann man irgendwo sehen, wann ein Plugin installiert wurde?
Ich sehe gerade, dass die rc-8 erst NACH dem Testlauf installiert wurde:
OK; dann war es RC-7, der im Einsatz war.
Die JSON aus der Progress-Table des Versuchs 321:
und hier die CSV:
Danke sehr!
Im JSON sind folgende Infos zu sehen: playedquestions ist ein leeres array isfirstquestion ist true ABER "lastquestion" ist gesetzt und nicht leer. Ich denke das passiert, wenn es schon beim ersten Quiz-Start zu einem Fehler gekommen ist.* Daher ist der code nicht vollständig ausgeführt worden und wurde abgebrochen, noch bevor die Standardfehler berechnet worden sind. Wenn jetzt versucht wird das quiz fortzusetzen, wird beim Update der Feedback-Daten versucht auf einen nicht vorhandenen Standardfehler zuzugreifen. Das sollte mit der letzten Version behoben sein, da ich hier jedes mal noch vor der Auswahl der Frage überall Default-Werte für den Standardfehler setze, falls es noch keinen Wert gibt.
* Ich vermute, dass es beim ersten Quiz-Start zu einem Fehler gekommen ist, weil die maximum questions per attempt noch 0 waren und dadurch der division by zero Fehler in adaptivequiz ausgelöst worden ist.
Es war aber der erste Quiz-Start, vorher gab es von der Person keinen Attempt.
Der Fehler muss also woanders entstehen. Ganz "regulär" bei einem (ersten) Testversuch.
Auch das mit der maxquestions-Einstellung kann nicht der Fall gewesen sein, da diese noch vor dem erster Attempt in dem Test bereits gesetzt war.
Hm ok.
Im "firstquestionselector" wird eigentlich automatisch ein Standarderror gesetzt. Die einzige Ausnahme ist, wenn eine Person bereits eine person ability hat - aber in dem Fall sollte die Person ja auch einen Standardfehler haben und da es der erst Versuch von dieser Person war, sollte es sowieso keine ability geben.
Falls das nicht zutrifft, sollte in Zeile 135 oder 146 ein Standardfehler gesetzt werden.
Ich hab mir nochmal die JSON Daten angeschaut: es ist recht eigenartig, dass playedquestions
ein leeres Array ist aber lastquestion
einen Wert hat.
Es gibt nur 3 Stellen wo dieser Wert gesetzt wird:
null
gesetzt https://github.com/Wunderbyte-GmbH/moodle-local_catquiz/blob/d2ff80893f31e10975158874cd34a0b2db0b64c7/classes/teststrategy/progress.php#L364add_playedquestions($q)
Methode. Und hier wird die Frage aus dem Argument auch zum playedquestions
array hinzugefügt. https://github.com/Wunderbyte-GmbH/moodle-local_catquiz/blob/d2ff80893f31e10975158874cd34a0b2db0b64c7/classes/teststrategy/progress.php#L593Es gibt zwar noch eine Stelle in der progress Klasse, in der die playedquestions gefiltert werden, aber das sollte nicht beim Start des Versuchs ausgeführt werden: https://github.com/Wunderbyte-GmbH/moodle-local_catquiz/blob/d2ff80893f31e10975158874cd34a0b2db0b64c7/classes/teststrategy/progress.php#L227
@ralferlebach Ich hab geschafft, den Fehler mit der vorherigen Version rc-7 folgendermaßen zu reproduzieren:
Das gleiche Szenario in rc-8 funktioniert, da hier default Standardfehler gesetzt werden
Trat bislang nicht wieder auf.
Wir haben das heute bei drei Personen gehabt und erst das Löschen von Attempts in der Datenbank in adaptivequiz_attempt hat das Problem lösen können.
Es wäre gut, nicht nur das Symptom, sondern auch die Ursache zu beheben. Daher hier der komplette ErrorLog-Auszug.
[Tue Apr 30 13:02:57.567820 2024] [php:notice] [pid 43612] [client 132.195.51.237:50081] Default exception handler: Fehler: No standarderror is set for scale 91 Debug: \nError code: generalexceptionmessage\n line 328 of /local/catquiz/classes/teststrategy/feedbacksettings.php: Exception thrown\n line 178 of /local/catquiz/classes/teststrategy/strategy/inferlowestskillgap.php: call to local_catquiz\teststrategy\feedbacksettings->filter_semax()\n line 222 of /local/catquiz/classes/teststrategy/feedbackgenerator.php: call to local_catquiz\teststrategy\strategy\inferlowestskillgap->select_scales_for_report()\n line 193 of /local/catquiz/classes/teststrategy/feedbackgenerator/customscalefeedback.php: call to local_catquiz\teststrategy\feedbackgenerator->select_scales_for_report()\n line 131 of /local/catquiz/classes/teststrategy/feedbackgenerator.php: call to local_catquiz\teststrategy\feedbackgenerator\customscalefeedback->load_data()\n line 229 of /local/catquiz/classes/output/attemptfeedback.php: call to local_catquiz\teststrategy\feedbackgenerator->update_data()\n line 148 of /local/catquiz/classes/output/attemptfeedback.php: call to local_catquiz\output\attemptfeedback->load_data_from_generators()\n line 213 of /local/catquiz/classes/teststrategy/strategy.php: call to local_catquiz\output\attemptfeedback->update_feedbackdata()\n line 160 of /local/catquiz/classes/teststrategy/strategy.php: call to local_catquiz\teststrategy\strategy->update_attemptfeedback()\n line 820 of /local/catquiz/classes/catquiz_handler.php: call to local_catquiz\teststrategy\strategy->return_next_testitem()\n line 84 of /mod/adaptivequiz/catmodel/catquiz/classes/local/catmodel/itemadministration/catquiz_item_administration.php: call to local_catquiz\catquiz_handler::fetch_question_id()\n line 106 of /mod/adaptivequiz/classes/local/adaptive_quiz_session.php: call to adaptivequizcatmodel_catquiz\local\catmodel\itemadministration\catquiz_item_administration->evaluate_ability_to_administer_next_item()\n* line 141 of /mod/adaptivequiz/attempt.php: call to mod_adaptivequiz\local\adaptive_quiz_session->administer_next_item_or_stop()\n, referer: https://lti.alise.uni-wuppertal.de/mod/adaptivequiz/view.php?id=2362
Gern können wir auch in der Datenbank nachsehen, was dort zu dem Versuch noch so gespeichert ist.