Univention Bugzilla – Bug 22711
UMC maximum recursion depth reached
Last modified: 2023-03-25 06:40:15 CET
+++ This bug was initially created as a clone of Bug #22594 +++ Dieser Bug wird auch durch den Code in den DVS-Modulen getriggert und scheint seine Ursache in einem Kommunikationsproblem zwischen UMC event loop und UVMM zu haben. Ausgelöst wird der Bug anscheinend unter anderem dadurch, dass ein Benutzer in einem UMC-Modul eine UVMM-Anfrage auslöst (z.B. Maschine Clonen) und nebenbei dann in einem zweiten UMC Modul eine weitere UVMM-Anfrage auslöst. Im konkreten Fall verbraucht der Prozess root 6354 31754 46 08:42 ? 00:20:00 /usr/bin/python2.4 /usr/sbin/univention-management-console-module -m dvs_templates -s /var/run/univention-management-console/31754-1306219366585.socket -i web -d 4 -l de_DE.utf8 dann ca. 90% CPU und looped im strace: -------------------------------------- gettimeofday({1306221660, 138522}, NULL) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0 write(2, "2011-05-24 09:21:00,138: notifier: ERROR : maximum recursion depth reached\nNone\n"..., 82) = 82 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0 write(8, "2011-05-24 09:21:00,138: notifier: ERROR : maximum recursion depth reached\nNone\n"..., 82) = 82 gettimeofday({1306221660, 139368}, NULL) = 0 -------------------------------------- In /var/log/univention/management-console-web.log stehen viele Meldungen folgender Art: -------------------------------------- 24.05.11 09:28:34 DEBUG_INIT 24.05.11 09:28:34 ADMIN ( ERROR ) : AJAX: EXCEPTION: [Errno 2] No such file or directory: '/tmp/webui/ffe604e17938c464caefb607da9b3c84/socket_filename' 24.05.11 09:28:34 ADMIN ( ERROR ) : AJAX: DATA = FieldStorage(None, None, [MiniFieldStorage('session_id', 'ffe604e17938c464caefb607da9b3c84'), MiniFieldStorage('umcpcmd', 'dvs/instance/state'), MiniFieldStorage('instance', 'qemu://xen13.dvs10.local/system#9902f9b7-2951-44a9-9e9e-1155e22e94f5'), MiniFieldStorage('dojo.preventCache', '1306222113769')]) 24.05.11 09:28:34 ADMIN ( ERROR ) : Traceback (most recent call last): File "/var/www/univention-management-console/ajax.py", line 87, in main fn = open('/tmp/webui/%s/socket_filename' % session_id).read() IOError: [Errno 2] No such file or directory: '/tmp/webui/ffe604e17938c464caefb607da9b3c84/socket_filename' -------------------------------------- Endresultat ist, dass die Logmeldungen die Platte fluten. Vermutlich ist das das gleiche Problem wie der Ursprungsbug: +++ This bug was initially created as a clone of Bug #21616 +++
Aus meiner Sicht blockt der Bug das Release.
Die maximale Rekursionstiefe wurde für den Modulprozess erhöht auf 50
In UMC wurde der RefreshFrame um einen optionalen, booleschen Parameter "no_concurrency" erweitert, der den Default "False" verwendet. no_concurrency=False: Der Javascript-Timer feuert im angegebenen Intervall und setzt Ajax-Requests ab, ungeachtet dessen, ob die Antwort für diese Requests bereits eingegangen ist. no_concurrency=True: NACH dem Eingang der Antwort wird ein neuer Timeout gestartet. Sollte eine Antwort ausbleiben, finden keine Refreshs mehr statt. Das regelmäßige Intervall zwischen den Anfragen setzt sich dabei aus a) dem angegebenem Intervall und b) der Zeit zwischen Anfrage und Antwort zusammen. univention-dvs-sessionbroker wurde entsprechend um den Parameter (no_concurrency=True) erweitert.
Verified. Das Maximum Recursion Level liess sich nicht mehr reproduzieren.