dbcheck: Avoid pathological behaviour in operational module
authorGarming Sam <garming@catalyst.net.nz>
Wed, 20 Apr 2016 03:25:45 +0000 (15:25 +1200)
committerGarming Sam <garming@samba.org>
Wed, 20 Apr 2016 07:12:47 +0000 (09:12 +0200)
Because replPropertyMetadata was repeated for every object in the
database, the attrs list became very long.

This single line saves 20% of the time for make test TESTS=dbcheck.

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Garming Sam <garming@samba.org>
Autobuild-Date(master): Wed Apr 20 09:12:47 CEST 2016 on sn-devel-144

python/samba/dbchecker.py

index db0803b7a91a07758b5ff0d3bc5ebaa682fd4e7e..bcefc266c02851f1eb34be85d0b75d3a37b47ad9 100644 (file)
@@ -1229,6 +1229,10 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
         '''check one object'''
         if self.verbose:
             self.report("Checking object %s" % dn)
+
+        # If we modify the pass-by-reference attrs variable, then we get a
+        # replPropertyMetadata for every object that we check.
+        attrs = list(attrs)
         if "dn" in map(str.lower, attrs):
             attrs.append("name")
         if "distinguishedname" in map(str.lower, attrs):