commit e5dfec6736df369098108a9cb4cb9c1d1b73022b Author: Florian Best Date: Fri Oct 13 18:07:00 2017 +0200 Bug #45540: make univention.admin.modules.update() thread safer diff --git a/management/univention-directory-manager-modules/modules/univention/admin/modules.py b/management/univention-directory-manager-modules/modules/univention/admin/modules.py index 7c1b42b..9b8e13e 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/modules.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/modules.py @@ -59,7 +59,7 @@ def update(): '''scan handler modules''' global modules, _superordinates - modules = {} + _modules = {} _superordinates = set() # since last update(), syntax.d and hooks.d may have changed (Bug #31154) @@ -67,7 +67,6 @@ def update(): univention.admin.hook.import_hook_files() def _walk(root, dir, files): - global modules, _superordinates for file in files: if not file.endswith('.py') or file.startswith('__'): continue @@ -81,7 +80,7 @@ def _walk(root, dir, files): if not hasattr(m, 'module'): ud.debug(ud.ADMIN, ud.ERROR, 'admin.modules.update: attribute "module" is missing in module %r' % (mod,)) continue - modules[m.module] = m + _modules[m.module] = m if isContainer(m): containers.append(m) @@ -92,6 +91,7 @@ def _walk(root, dir, files): if not os.path.isdir(dir): continue os.path.walk(dir, _walk, p) + modules = _modules def get(module):