From 40ed2cebe98bd9501f1812e63347d82cdb10f1de Mon Sep 17 00:00:00 2001 From: Derek Feichtinger Date: Mon, 10 Dec 2012 15:27:22 +0100 Subject: [PATCH] testing ldap reconnect with deleting old object first --- ldapuserdir/ldapuserdir.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/ldapuserdir/ldapuserdir.py b/ldapuserdir/ldapuserdir.py index 95431a0..9a0d633 100644 --- a/ldapuserdir/ldapuserdir.py +++ b/ldapuserdir/ldapuserdir.py @@ -101,6 +101,10 @@ class LdapUserDir(object): attrlist=None, attrsonly=0, recon_attempts = 2): """ wrapper of standard ldap.search_s synchronous search that tries to reconnect + + Implemented that myself since the use of the automatic reconnect + available (ReconnectLDAPObject) led to a connection that returned + empty answers. This way I have more control. """ attempts = 0 ok = False @@ -113,12 +117,27 @@ class LdapUserDir(object): except ldap.SERVER_DOWN: self.logger.warning("Got ldap server down: Reconnecting (try %s)" % attempts) + try: + del self._ldap + except Exception, err: + self.logger.warning("failed to delete LDAP object: %s" + % str(err)) + + time.sleep(1) + try: self._ldap = ldap.initialize(self.serverurl, trace_level=0, trace_file=sys.stderr) except ldap.SERVER_DOWN: - self.logger.warning("ldap initialization error") - time.sleep(1) + self.logger.warning("ldap initialization error" + + ", server down (server: %s)" % + self.serverurl + + ": %s" % str(err)) + except Exception, err: + self.logger.warning("ldap initialization error" + + " (server: %s)" % + self.serverurl + + ": %s" % str(err)) if attempts >= recon_attempts: raise