diff --git a/ldap_locks.py b/ldap_locks.py index 9bda296..76bce28 100644 --- a/ldap_locks.py +++ b/ldap_locks.py @@ -79,6 +79,7 @@ class LdapLockHolder: self.host = socket.gethostname() self.pid = os.getpid() self.conn = conn + self.time = 600.0 def purge(self, Id=None): """ @@ -118,18 +119,21 @@ class LdapLockHolder: """ try: host, pid, begin = self.getlock(item, value) - if time.time() - begin >= 600.0: + if time.time() - begin >= self.time: self.removelock(item, value, Id, True) elif host == self.host and pid == self.pid: - raise LdapLockedByYou("La donnée %r=%r est lockée par vous-même." % (item, value)) + time_left = self.time - (time.time() - begin) + raise LdapLockedByYou("La donnée %r=%r est lockée par vous-même pour encore %ds." % (item, value, time_left)) elif host == self.host: status = crans_utils.process_status(pid) if status: - raise LdapLockedByOther("La donnée %r=%r est lockée par un processus actif." % (item, value)) + time_left = self.time - (time.time() - begin) + raise LdapLockedByOther("La donnée %r=%r est lockée par un processus actif pour encore %ds." % (item, value, time_left)) else: self.removelock(item, value, Id, True) else: - raise LdapLockedByOther("La donnée %r=%r est lockée depuis une autre machine." % (item, value)) + time_left = self.time - (time.time() - begin) + raise LdapLockedByOther("La donnée %r=%r est lockée depuis une autre machine pour encore %ds." % (item, value, time_left)) except ldap.NO_SUCH_OBJECT: pass except LockFormatError: