kcc: Make more fault tolerant on DC demotion
authorGarming Sam <garming@catalyst.net.nz>
Thu, 21 Jul 2016 01:08:31 +0000 (13:08 +1200)
committerGarming Sam <garming@samba.org>
Thu, 21 Jul 2016 04:37:08 +0000 (06:37 +0200)
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/kcc/__init__.py

index 192015af7e8506a25f301e2b2a6c62d5f1ed0a70..5498238761ec70457e759b6dac4c4015c8f06d7f 100644 (file)
@@ -533,9 +533,18 @@ class KCC(object):
         connections_and_dsas = []
         for dsa in local_dsas.values():
             for cn in dsa.connect_table.values():
+                if cn.to_be_deleted:
+                    continue
                 s_dnstr = cn.get_from_dnstr()
+                if s_dnstr is None:
+                    continue
                 if s_dnstr not in local_dsas:
                     from_dsa = self.get_dsa(s_dnstr)
+                    # Samba ONLY: ISTG removes connections to dead DCs
+                    if from_dsa is None and '\\0ADEL' in s_dnstr:
+                        logger.info("DSA appears deleted, removing connection %s" % s_dnstr)
+                        cn.to_be_deleted = True
+                        continue
                     connections_and_dsas.append((cn, dsa, from_dsa))
 
         self._ensure_connections_are_loaded(x[0] for x in connections_and_dsas)