Full_Name: Stelios Grigoriadis Version: 2.3.32 OS: Linux, (SLES 10) URL: http://ninikos.freehostia.com/bdb_idl_cache_bug.tar.gz Submission from: (NULL) (194.237.142.7)
When using slapd with the snapshot isolation level in DB (version 4.5.20) it is possible that added entries don't appear in subsequent searches.
Scenario: A client is adding new information while at the same time another is initiating an LDAP search with the same searchbase as the "parent" of the added information. If the search is executed after the add operation has cleared the IDL-cache but before the changes has been committed, the added entries will not appear in any subsequent searches unless slapd is restarted.
The problem is that, in the bdb_idl_insert_key-function, the key is deleted from the IDL-cache but the newly added keys in the database are not yet committed, so clients that re-read the information will not have those updated keys.
The solution would be to clear the relevant IDL-cache entries after the changes has been committed.
This behaviour is demonstrated by the program cache_test_fork.c which is supplied in bdb_idl_cache_bug.tar.gz along with the slapd configuration.
I am currently working on the solution but would greatly appreciate any help from you as I am not nearly as familiar with the code as you are.