Andrew Bartlett wrote:
On Sat, 2008-03-15 at 18:28 +0100, Pierangelo Masarati wrote:
Pierangelo Masarati wrote:
... each instance would take care of referential integrity only within the database, but inconsistencies across databases would not be handled. I think the latter case is what you'd like to see addressed, right?
In any case it's now implemented in HEAD (ITS#5428); please test.
p.
Is the refint module synchronous or transaction based?
It is necessarily asynchronous. It will cause deadlocks in combination with other overlays if it's made synchronous. (Been there, done that, ITS's already dealt with...)
I'm seeing some *very* odd effects in my test script, that could be explained if the overlay did it's work asynchronously after returning success to the client (for the original operation).
Things I'm seeing are: When loaded as a per-database overlay, the search for:
member=member=CN=ldaptestuser4,CN=ldaptestcontainer2,DC=samba,DC=example,DC=com
fails in my test script, but succeeds if I restart slapd and search with ldbsearch. Just earlier in the script, cn=ldaptestcontainer is renamed to cn=ldaptestcontainer2.
If I load the overlay globally, this entry (cn=ldaptestuser4) actually disappears completely, including the member reference. (It shouldn't be deleted, but perhaps one of the earlier operations triggers it).
This seems very odd - if you don't have any clues, I'll look into running this over TCP (rather than ldapi) and get a trace.
Just use -d7 to get packet traces, no need to change your connection method.