From 294773ba6edcb557db4dad46cb6e59476b2f221d Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Sun, 9 Nov 2014 16:50:48 +0100 Subject: [PATCH] [ldap_locks, lc_ldap] Ooups, erreur d'index / d'iteration --- lc_ldap.py | 4 ++-- ldap_locks.py | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lc_ldap.py b/lc_ldap.py index 1f3a05e..7068797 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -508,8 +508,8 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object): except ldap_locks.LockError: continue else: - raise EnvironmentError('Aucun %s libre dans la plage [%d, %d]' % - (attr, plage[0], i)) + raise EnvironmentError('Aucun %s libre dans la plage %s' % + (attr, realm)) else: # On extrait seulement les valeurs des id qui nous intêressent dans une liste nonfree = [ int(r[1].get(attr)[0]) for r in res if r[1].get(attr) ] diff --git a/ldap_locks.py b/ldap_locks.py index aca3bbc..469fda9 100644 --- a/ldap_locks.py +++ b/ldap_locks.py @@ -172,11 +172,12 @@ class LdapLockHolder: def check(self, Id='default', delai=0): """Vérifie que l'on a toujours tous nos locks""" - for item, value in self.locks[Id]: - host, pid, begin = self.getlock(item, value) - time_left = self.timeout - (time.time() - begin) - if time_left <= delai: - raise LockExpired("Le lock sur la donnée %r=%r à expiré" % (item, value, time_left)) + for item, values in self.locks[Id].items(): + for value in values: + host, pid, begin = self.getlock(item, value) + time_left = self.timeout - (time.time() - begin) + if time_left <= delai: + raise LockExpired("Le lock sur la donnée %r=%r à expiré" % (item, value, time_left)) def removelock(self, item, value, Id='default', force=False): """ @@ -207,6 +208,9 @@ class LdapLockHolder: return host, int(pid), float(begin) except ldap.NO_SUCH_OBJECT: raise LockNotFound() + except ldap.INVALID_DN_SYNTAX: + print '%s=%s,%s' % (item, value, LOCKS_DN) + raise except ValueError as e: self.removelock(item, value, Id, force=True) raise LockNotFound()