[ldap_locks, objets] Juste avant d'écrire dans la base ldap, on vérifie les locks
ils existent toujours et n'ont pas expiré, sinon, il ne faut pas faire l'enregistrement.
This commit is contained in:
parent
3a3d51e408
commit
494cd42d83
2 changed files with 20 additions and 3 deletions
|
@ -47,6 +47,12 @@ class LockError(exceptions.StandardError):
|
|||
"""
|
||||
pass
|
||||
|
||||
class LockExpired(LockError):
|
||||
"""
|
||||
Classe d'erreur pour les locks non libéré avant
|
||||
la durée d'expiration du lock
|
||||
"""
|
||||
pass
|
||||
class LdapLockedByYou(LockError):
|
||||
"""
|
||||
Classe d'erreur pour les locks par le process courant
|
||||
|
@ -164,6 +170,14 @@ class LdapLockHolder:
|
|||
# S'il a été libéré, banzai, sinon, ça lèvera une exception
|
||||
return self.addlock(item, value, Id)
|
||||
|
||||
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))
|
||||
|
||||
def removelock(self, item, value, Id='default', force=False):
|
||||
"""
|
||||
Libère le lock "$item=$value,$LOCKS_DN".
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue