Changement dans les locks

darcs-hash:20040907173017-41617-08936952494ae0d19ea5725ae2e0e5c9ca95d0cd.gz
This commit is contained in:
pauget 2004-09-07 19:30:17 +02:00
parent 90dfa26aec
commit d8491177be

View file

@ -217,20 +217,38 @@ class crans_ldap :
"""
if not self.conn : self.connect()
r=[]
ret = self.conn.search_s(self.base_dn,2,arg)
ret += self.conn.search_s(self.base_lock,1,arg)
# Premier test : dans les objets déja inscrits
ret = self.conn.search_s(self.base_dn,2,arg)
for res in ret :
# C'est peut être l'objet courant
try : # Si ce n'est pas une classe fille avec l'attribu dn => erreur
if res[0] == self.dn or res[1]['lockid'][0] == '%s-%s' % (hostname, os.getpid()) :
return []
if res[0] == self.dn :
continue
except :
None
pass
r.append(res[0])
return r
# Deuxième test : lock ?
ret = self.conn.search_s(self.base_lock,1,arg)
lockid = '%s-%s' % (hostname, os.getpid() )
for res in ret :
# Lock encore actif ?
l = res[1]['lockid'][0]
if l == lockid : continue
# C'est locké par un autre process que le notre
# il tourne encore ?
try :
if l.split('-')[0] == hostname and os.system('ps %s > /dev/null 2>&1' % l.split('-')[1] ) :
# Il ne tourne plus
self.remove_lock(res[0]) # delock
continue
except :
pass
r.append(res[0])
return []
def lock(self,item,valeur) :
""" Lock un item avec la valeur valeur, les items possibles peuvent être :
aid $ chbre $ mail $ mailAlias $ cannonicalAlias $
@ -259,7 +277,7 @@ class crans_ldap :
# C'est locké par un autre process que le notre
# il tourne encore ?
try :
if os.system('ps %s > /dev/null 2>&1' % l.split('-')[1] ) :
if l.split('-')[0] == hostname and os.system('ps %s > /dev/null 2>&1' % l.split('-')[1] ) :
# Il ne tourne plus
self.remove_lock(res[0]) # delock
return self.lock(item,valeur) # relock