[Date Prev][Date Next] [Chronological] [Thread] [Top]

continuous cache corruption behaviour ?



Hello,

I get strange behaviour from OpenLDAP when adding NEW entries:

I'm using OpenLDAP 1.2.10 on a Debian GNU/Linux 2.2 box. The LDAP
database
(which contains aliases) is interfaced with a Postfix STMP mailer.
I've made a daemon that adds users to the LDAP database in Python.
The only 'special' thing that it does is that it tries to remove the
user before adding a new one (I don't test if it exists or not, I delete
it):

try:
   self.ldap_server.delete_s(dn)
except:
   pass
try:
   self.ldap_server.add_s(dn,[
   ('objectclass', ['virtualuser']),
   ('cn',[username]),
   ('mailacceptinggeneralid', [username]),
   ('maildrop', [alias])
   ])
except ldap.LDAPError,why:
   print "Error adding user"
   ...

With this, what happens is that I get sometimes (not every time) an
error
which says that the user already exists ! ({'desc': 'Already exists'}).

I don't understand how can this be possible, as I delete anything before
adding a user. Moreover, when I look at the database records, the user
doesn't exist (before invocation AND even after the error) !

Here are the entries I get in the logs:
slapd[11337]: conn=5480 fd=19 connection from forwarder.domain.com
(214.66.34.61) accepted.
slapd[23792]: conn=5480 op=0 BIND dn="CN=ADMIN,DC=DOMAIN,DC=COM"
method=128
slapd[23792]: conn=5480 op=0 RESULT err=0 tag=97 nentries=0
slapd[23793]: conn=5480 op=1 DEL
dn="CN=SOMEUSER@DOMAIN.COM,DC=DOMAIN,DC=COM"
slapd[23793]: conn=5480 op=1 RESULT err=32 tag=107 nentries=0
slapd[23794]: conn=5480 op=2 ADD
dn="CN=SOMEUSER@DOMAIN.COM,DC=DOMAIN,DC=COM"
slapd[23794]: ====> entry cn=someuser@domain.com,dc=domain,dc=com id
6255 already in id cache
slapd[23794]: cache_add_entry_lock failed
slapd[23794]: conn=5480 op=2 RESULT err=68 tag=105 nentries=0

Can anyone explain me why OpenLDAP returns these errors ? Is my database
corrupted ?

Thanks,
Luc Stepniewski <lstep@banquise.org>