[SCM] Samba Shared Repository - branch master updated

Garming Sam garming at samba.org
Thu Dec 21 07:29:02 UTC 2017


The branch, master has been updated
       via  6a6f095 samba-tool domain schemaupgrade: Avoid reindex after every hunk
      from  fafc6da ldapcmp: Improve the difference checker of ldapcmp for 2012 R2

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6a6f0952a5769628bfa07d1bf1c04bd23d827492
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Dec 21 12:07:46 2017 +1300

    samba-tool domain schemaupgrade: Avoid reindex after every hunk
    
    This takes advantage of the fact that a single LDB operation is atomic
    even inside our transaction and so we can retry it after updating the
    schema.
    
    This makes the smaba-tool domain schemaupgrade take 1m30s compared with 4m4s.
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    
    Autobuild-User(master): Garming Sam <garming at samba.org>
    Autobuild-Date(master): Thu Dec 21 08:28:51 CET 2017 on sn-devel-144

-----------------------------------------------------------------------

Summary of changes:
 python/samba/netcmd/domain.py | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/python/samba/netcmd/domain.py b/python/samba/netcmd/domain.py
index a3dd565..ada7d6b 100644
--- a/python/samba/netcmd/domain.py
+++ b/python/samba/netcmd/domain.py
@@ -3915,7 +3915,21 @@ schemaUpdateNow: 1
         """Applies a single LDIF update to the schema"""
 
         try:
-            samdb.modify_ldif(self.ldif, controls=['relax:0'])
+            try:
+                samdb.modify_ldif(self.ldif, controls=['relax:0'])
+            except ldb.LdbError as e:
+                if e.args[0] == ldb.ERR_INVALID_ATTRIBUTE_SYNTAX:
+
+                    # REFRESH after a failed change
+
+                    # Otherwise the OID-to-attribute mapping in
+                    # _apply_updates_in_file() won't work, because it
+                    # can't lookup the new OID in the schema
+                    self._ldap_schemaUpdateNow(samdb)
+
+                    samdb.modify_ldif(self.ldif, controls=['relax:0'])
+                else:
+                    raise
         except ldb.LdbError as e:
             if self.can_ignore_failure(e):
                 return 0
@@ -3927,11 +3941,6 @@ schemaUpdateNow: 1
 
                 raise
 
-        # REFRESH AFTER EVERY CHANGE
-        # Otherwise the OID-to-attribute mapping in _apply_updates_in_file()
-        # won't work, because it can't lookup the new OID in the schema
-        self._ldap_schemaUpdateNow(samdb)
-
         return 1
 
 class cmd_domain_schema_upgrade(Command):


-- 
Samba Shared Repository



More information about the samba-cvs mailing list