[Fedora-directory-users] db_verify

Ville Silventoinen vsi at ebi.ac.uk
Thu Mar 29 11:18:25 UTC 2007


After I import about 1400 accounts to a new database (ebiRoot, People 
subtree), I get lot of errors when I run verify-db.pl (slapd has been stopped):

Verify log files in db ... Good
Verify db/ebiRoot/uid.db4 ... Good
Verify db/ebiRoot/mail.db4 ...
DB ERROR: db_verify: Page 37: out-of-order key at entry 247
DB ERROR: db_verify: Page 37: out-of-order key at entry 503
...

Same error for ancestorid.db4, objectclass.db4, parentid.db4, cn.db4, 
givenName.db4 and sn.db4.

I have run db2index and re-run verify-db.pl but I don't see any 
difference. Here is what db2index says about ebiRoot:

[29/Mar/2007:12:04:26 +0100] upgrade DB - ebiRoot: Start upgradedb.
[29/Mar/2007:12:04:26 +0100] - WARNING: Import is running with nsslapd-db-private-import-mem on; No other process is allowed to access the database
[29/Mar/2007:12:04:26 +0100] - import ebiRoot: Index buffering enabled with bucket size 100
[29/Mar/2007:12:04:27 +0100] - import ebiRoot: Workers finished; cleaning up...
[29/Mar/2007:12:04:28 +0100] - import ebiRoot: Workers cleaned up.
[29/Mar/2007:12:04:28 +0100] - import ebiRoot: Cleaning up producer thread...
[29/Mar/2007:12:04:28 +0100] - import ebiRoot: Indexing complete.  Post-processing...
[29/Mar/2007:12:04:28 +0100] - import ebiRoot: Flushing caches...
[29/Mar/2007:12:04:28 +0100] - import ebiRoot: Closing files...
[29/Mar/2007:12:04:29 +0100] - import ebiRoot: Import complete.  Processed 
1424 entries in 3 seconds. (474.67 entries/sec)


Does that WARNING "No other process is alloed to access the database" mean 
something is wrong?

How can I locate those "out-of order keys" the db_verify lists? I tried 
with dbscan but I don't think I'm giving the right entry id:

$ ./dbscan -K 247 -f db/ebiRoot/mail.db4
Can't set cursor to returned item: DB_NOTFOUND: No matching key/data pair found

Is there a way to find out which entries are causing the problem? Can 
there be illegal characters in the entries?

If I import a considerably smaller set of entries (120), I get no errors. 
I noticed there was a similar thread here but no conclusion:

http://www.mail-archive.com/fedora-directory-users@redhat.com/msg04461.html

Sorry for so many questions, I've spent couple of days trying to 
solve the problem.

If I delete a database with the Console, it leaves behind couple of index files:

-rw-------  1 w3secure systems 16384 Mar 28 17:05 ancestorid.db4
-rw-------  1 w3secure systems    18 Mar 28 17:03 DBVERSION
-rw-------  1 w3secure systems 32768 Mar 28 17:05 id2entry.db4

These index files don't seem to shrink when new entries are imported. 
dbscan still shows the deleted entries in id2entry.

I noticed a problem when I import a small set of entries, delete the 
database, import large set of entries and if I query the entries, I get 
the entries from the first set (they don't exist in the second set). I can 
reproduce the problem. If I delete ancestorid.db4 and id2entry.db4 
manually when I delete the database, I don't have this problem. Is there a 
reason why those two files are not deleted? Or can this whole thing be 
caused by corrupted data?


Ville




More information about the Fedora-directory-users mailing list