mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
ldb: create a cache of known wellknown objects instead of continously searching in the db
Profiling on dbcheck have shown that we spend 10% of the time looking for wellknown objects. BUG: https://bugzilla.samba.org/show_bug.cgi?id=10973 Change-Id: I13ed58e8062d1b7b6179d17b0e7e56f943572c6c Signed-off-by: Matthieu Patou <mat@matws.net> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
c049106bf8
commit
6122acad0f
@ -39,6 +39,7 @@ class SamDB(samba.Ldb):
|
||||
"""The SAM database."""
|
||||
|
||||
hash_oid_name = {}
|
||||
hash_well_known = {}
|
||||
|
||||
def __init__(self, url=None, lp=None, modules_dir=None, session_info=None,
|
||||
credentials=None, flags=0, options=None, global_schema=True,
|
||||
@ -793,7 +794,19 @@ accountExpires: %u
|
||||
return dsdb._dsdb_get_nc_root(self, dn)
|
||||
|
||||
def get_wellknown_dn(self, nc_root, wkguid):
|
||||
return dsdb._dsdb_get_wellknown_dn(self, nc_root, wkguid)
|
||||
h_nc = self.hash_well_known.get(str(nc_root))
|
||||
dn = None
|
||||
if h_nc is not None:
|
||||
dn = h_nc.get(wkguid)
|
||||
if dn is None:
|
||||
dn = dsdb._dsdb_get_wellknown_dn(self, nc_root, wkguid)
|
||||
if dn is None:
|
||||
return dn
|
||||
if h_nc is None:
|
||||
self.hash_well_known[str(nc_root)] = {}
|
||||
h_nc = self.hash_well_known[str(nc_root)]
|
||||
h_nc[wkguid] = dn
|
||||
return dn
|
||||
|
||||
def set_minPwdAge(self, value):
|
||||
m = ldb.Message()
|
||||
|
Loading…
Reference in New Issue
Block a user