[ldap_locks] Affichage du temps restant avant expiration d'un lock si une LockError est levée

This commit is contained in:
Valentin Samir 2014-02-24 14:47:27 +01:00
parent 954ba580b6
commit 63b9f89b6f

View file

@ -79,6 +79,7 @@ class LdapLockHolder:
self.host = socket.gethostname() self.host = socket.gethostname()
self.pid = os.getpid() self.pid = os.getpid()
self.conn = conn self.conn = conn
self.time = 600.0
def purge(self, Id=None): def purge(self, Id=None):
""" """
@ -118,18 +119,21 @@ class LdapLockHolder:
""" """
try: try:
host, pid, begin = self.getlock(item, value) 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) self.removelock(item, value, Id, True)
elif host == self.host and pid == self.pid: 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: elif host == self.host:
status = crans_utils.process_status(pid) status = crans_utils.process_status(pid)
if status: 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: else:
self.removelock(item, value, Id, True) self.removelock(item, value, Id, True)
else: 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: except ldap.NO_SUCH_OBJECT:
pass pass
except LockFormatError: except LockFormatError: