center-for-learning-management / moodle-local_eduvidual

# moodle-local_eduvidual This plugin helps to make moodle a platform for multiple organisations within one site.
GNU General Public License v3.0
3 stars 2 forks source link

local_eduvidual\educloud\task fails with "At least one of 'school' and 'schools' must be set" #167

Closed GGeorggg closed 2 years ago

GGeorggg commented 2 years ago

Hallo @lassnj

ich weiß nicht wer für dieses Module zuständig ist / Wartung übernommen hat, aber selbst mit einem tempoprären Workaround für center-for-learning-management/eduvidual-src#594 -> https://github.com/center-for-learning-management/eduvidual-infrastructure/issues/1264 bekomme ich im adhoc task folgende Fehlermeldung:

Execute adhoc task: local_eduvidual\educloud\task
... started 12:45:31. Current memory use 26.9MB.
create #126469 in univention
UCS-Identifier prod_126469
Create failed, output of curl was stdClass Object
(
    [detail] => Array
        (
            [0] => stdClass Object
                (
                    [loc] => Array
                        (
                            [0] => body
                            [1] => __root__
                        )

                    [msg] => At least one of 'school' and 'schools' must be set.
                    [type] => value_error
                )

        )

)

Properties of user were: {"name":"prod_126469","schools":[],"firstname":"Lehrer","lastname":"Test","disabled":false,"expiration_date":"2099-12-31","record_uid":"l.test@bg-rams.ac.at","roles":[],"source_uid":"prod","ucsschool_roles":[],"udm_properties":{"e-mail":["L.Test@bg-rams.ac.at"]}}
... used 8 dbqueries
... used 0.24709486961365 seconds
Adhoc task failed: local_eduvidual\educloud\task,User #126469 could not be updated in univention!

Relates-to: https://github.com/center-for-learning-management/eduvidual-src/issues/581

rschrenk commented 2 years ago

@rschwarzinger hat mich gebeten mir die educloud-Synchronisation dringend anzusehen, weil der Testbetrieb sonst nicht pünktlich starten kann. Habe mich dem Problem daher angenommen.

Grundsätzlich funktioniert alles - eigentlich. Nur eine Schule konnte nicht synchonisiert werden. Hier habe ich herausgefunden, dass die Daten der Schule in der Datenbank nicht korrekt waren - jene aller anderen (davor und danach) aber schon.

MariaDB [moodle]> SELECT * FROM oer_local_eduvidual_educloud; +----+--------+------------+----------+--------------------------------------------------------------------+---------+ | id | orgid | enabled | byuserid | ucsurl | ucsname | +----+--------+------------+----------+--------------------------------------------------------------------+---------+ | 1 | 2 | 1652946765 | 2 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/2 | 2 | | 2 | 301056 | 1662729110 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/301056 | 301056 | | 3 | 308026 | 1663850063 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/308026 | 308026 | | 4 | 905448 | 1663706507 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/905448 | 905448 | | 5 | 206448 | 1663706547 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/206448 | 206448 | | 6 | 403046 | 1663706577 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/403046 | 403046 | | 7 | 417427 | 1663706616 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/417427 | 417427 | | 8 | 503212 | 1663706640 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/503212 | 503212 | | 9 | 915075 | 1663706668 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/915075 | 915075 | | 10 | 401136 | 1663924189 | 2 | NULL | NULL | | 11 | 703026 | 1663706708 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/703026 | 703026 | | 12 | 701026 | 1663706740 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/701026 | 701026 | +----+--------+------------+----------+--------------------------------------------------------------------+---------+

In Folge, aufgrund des Fehlens der ucsurl, konnten die Nutzerkonten im UCS-Portal keiner Schule zugewiesen werden - man muss aber mindestens einer Schule zugewiesen werden.

Ich habe die Daten händisch korrigiert. MariaDB [moodle]> SELECT * FROM oer_local_eduvidual_educloud; +----+--------+------------+----------+--------------------------------------------------------------------+---------+ | id | orgid | enabled | byuserid | ucsurl | ucsname | +----+--------+------------+----------+--------------------------------------------------------------------+---------+ | 1 | 2 | 1652946765 | 2 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/2 | 2 | | 2 | 301056 | 1662729110 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/301056 | 301056 | | 3 | 308026 | 1663850063 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/308026 | 308026 | | 4 | 905448 | 1663706507 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/905448 | 905448 | | 5 | 206448 | 1663706547 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/206448 | 206448 | | 6 | 403046 | 1663706577 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/403046 | 403046 | | 7 | 417427 | 1663706616 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/417427 | 417427 | | 8 | 503212 | 1663706640 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/503212 | 503212 | | 9 | 915075 | 1663706668 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/915075 | 915075 | | 10 | 401136 | 1663924189 | 2 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/401136 | 401136 | | 11 | 703026 | 1663706708 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/703026 | 703026 | | 12 | 701026 | 1663706740 | 272850 | https://ucs.educloud-austria.at/ucsschool/kelvin/v1/schools/701026 | 701026 | +----+--------+------------+----------+--------------------------------------------------------------------+---------+ 12 rows in set (0.000 sec)

Dann habe ich in der Tabelle adhoc_tasks den nextrun auf 0 gesetzt, damit die Tasks sofort neu versucht werden.

MariaDB [moodle]> UPDATE oer_task_adhoc SET nextruntime=0,faildelay=0 WHERE component='local_eduvidual';
Query OK, 272 rows affected (0.003 sec)
Rows matched: 272  Changed: 272  Warnings: 0

Anschließend habe ich am evcron den adhoc_task gestartet.

schrenk@evcron01:/data/web/www/vhosts/www.eduvidual.at/admin/cli$ sudo -u www-data php adhoc_task.php --execute='\local_eduvidual\educloud\task'
...
Adhoc task complete: local_eduvidual\educloud\task
Ran 133 adhoc tasks found at Fri, 23 Sep 2022 11:27:24 +0200

Alle Tasks wurden erfolgreich abgeschlossen:

MariaDB [moodle]> SELECT * FROM oer_task_adhoc WHERE component='local_eduvidual';
Empty set (0.001 sec)

Es sollte beobachtet werden, ob das häufiger passiert, dass Schulen nicht angelegt werden können. Möglicherweise war das aber nur ein kurzzeitiges Problem wegen der Einführung von Proxy-Einstellungen (siehe center-for-learning-management/eduvidual-src#594).