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

Database corruption with ldbm backend (ITS#935)



Full_Name: Matthias Ohlemeyer
Version: 2.0.6
OS: Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (194.49.45.2)


When updating a few hundred entries in my LDAP-Database I somehow manage to
corrupt my backend database files (gdbm under SuSE 7.0), at least that's what I
think is going on.

I have a small commandline Java-Program using JNDI that finds the entries by uid
und updates a few attributes. When I interrupt the running Program whith Ctrl-C
(the client-programm runs on a Windows machine) I sometimes get a very strange
situation in the database. Certain entries can only be found when specifying
objectclass=top although, when viewing the entry, other objectclasses are also
given. E.g.

Using filter (&(objectclass=inetorgperson)(uid=abc12)) the entry is not found,
using filter (&(objectclass=top)(uid=abc12)) the entry is found.

The entry looks like this

dn: uid=abc12, o=AB, dc=ABCD, dc=de
givenName: xyz
sn: qwe
telephoneNumber: 1234
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
uid: abc12
cn: xyz qwe

The strange thing is, that I could find the entry before running the Java
program and I can find the entry, when the programs terminats normally. I tried
using slapindex, but this did not help. On the other hand I got it fixed, when I
do an LDIF-Export of all entries, delete all entries an do an LDIF-import
afterwards.

Is this an openldap or a gdbm related problem. Do you think switching to
sleepycat would help?