Univention Bugzilla – Bug 27418
Handler wird bei Initialisierung teilweise doppelt aufgerufen
Last modified: 2015-07-15 11:17:12 CEST
Bei einem selbstgeschriebenden Listener-Modul (das bisher nur Aufrufe loggt) ist aufgefallen, daß dieses bei der Initialisierung für einige Objekte scheinbar doppelt aufgerufen wird: > 09:02:15.316 mmp.init() > 09:02:15.367 mmp.setdata(key=basedn, value=dc=phahn,dc=qa) > 09:02:15.369 mmp.setdata(key=binddn, value=cn=admin,dc=phahn,dc=qa) > 09:02:15.371 mmp.setdata(key=bindpw, value=XXXXXXXXXX) > 09:02:15.373 mmp.setdata(key=ldapserver, value=mas13.phahn.qa) > 09:02:15.397 mmp.clean() > 09:02:15.397 mmp.initialize() > 09:02:18.069 mmp.prerun() > 09:02:18.113 mmp.handler(dn=uid=join-backup,cn=users,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:18.151 mmp.handler(dn=uid=Administrator,cn=users,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:18.182 mmp.handler(dn=cn=mas13,cn=dc,cn=computers,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:18.244 mmp.handler(dn=uid=join-slave,cn=users,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:18.280 mmp.handler(dn=uid=join-backup,cn=users,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:18.318 mmp.handler(dn=uid=Administrator,cn=users,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:18.353 mmp.handler(dn=cn=mas13,cn=dc,cn=computers,dc=phahn,dc=qa, new=True, old=False, command=n) > 09:02:33.389 mmp.postrun() Das verkompliziert in diesem Fall den Listener, da sich dieser bei (new && !old) nicht mehr darauf verlassen kann, daß das Objekt nicht schon existiert. Das Listener-Modul verwendet „modrdn="True"”, stritt aber auch bei nicht gesetztem modrdn auf.
Das tritt auf, wenn zusätzlich zu "filter" auch "filters" spezifiziert sind und diese sich überschneiden. 1. "filters" ist derzeit noch nicht dokumentiert 2. Wegen Bug #27376 wird bei fehlendem "filter" (ggf. dann erst bei einem anderem Modul) eine Fehlermeldung ausgegeben. Am besten wäre es, daß der Handler nur einmal aufgerufen wird, aber zumindest muß das mit dokumentiert werden, wenn "filters" dokumentiert wird. Deswegen lass ich den Bug nochmal offen.
Wo ist der Unterschied zwischen filter und filters?
(In reply to comment #2) > Wo ist der Unterschied zwischen filter und filters? 1. filters ist nicht dokumentiert 2. filters ist eine Liste von 3-Tupeln [(basis, scope, filter), ...], erlaubt also an unterschiedlichen Stellen im DIT nach unterschiedlichen Dingen zu suchen. 3. filter überdeckt __builtins__.filter()
The code for "filters" was removed in Bug #27329 by r35518 for UCS-3.1 *** This bug has been marked as a duplicate of bug 27329 ***