[ldap_locks, lc_ldap] Ooups, erreur d'index / d'iteration

This commit is contained in:
Valentin Samir 2014-11-09 16:50:48 +01:00
parent 1b76ba5420
commit 294773ba6e
2 changed files with 11 additions and 7 deletions

View file

@ -508,8 +508,8 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
except ldap_locks.LockError: except ldap_locks.LockError:
continue continue
else: else:
raise EnvironmentError('Aucun %s libre dans la plage [%d, %d]' % raise EnvironmentError('Aucun %s libre dans la plage %s' %
(attr, plage[0], i)) (attr, realm))
else: else:
# On extrait seulement les valeurs des id qui nous intêressent dans une liste # 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) ] nonfree = [ int(r[1].get(attr)[0]) for r in res if r[1].get(attr) ]

View file

@ -172,11 +172,12 @@ class LdapLockHolder:
def check(self, Id='default', delai=0): def check(self, Id='default', delai=0):
"""Vérifie que l'on a toujours tous nos locks""" """Vérifie que l'on a toujours tous nos locks"""
for item, value in self.locks[Id]: for item, values in self.locks[Id].items():
host, pid, begin = self.getlock(item, value) for value in values:
time_left = self.timeout - (time.time() - begin) host, pid, begin = self.getlock(item, value)
if time_left <= delai: time_left = self.timeout - (time.time() - begin)
raise LockExpired("Le lock sur la donnée %r=%r à expiré" % (item, value, time_left)) 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): def removelock(self, item, value, Id='default', force=False):
""" """
@ -207,6 +208,9 @@ class LdapLockHolder:
return host, int(pid), float(begin) return host, int(pid), float(begin)
except ldap.NO_SUCH_OBJECT: except ldap.NO_SUCH_OBJECT:
raise LockNotFound() raise LockNotFound()
except ldap.INVALID_DN_SYNTAX:
print '%s=%s,%s' % (item, value, LOCKS_DN)
raise
except ValueError as e: except ValueError as e:
self.removelock(item, value, Id, force=True) self.removelock(item, value, Id, force=True)
raise LockNotFound() raise LockNotFound()