[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: HEAD back-ldbm
Howard, I recently changed bdb_referral() (and ldbm_back_referral())
because a LDAP_OTHER was being returned while correctly setting rs->sr_err
to LDAP_REFERRAL, because the return of the function was causing troubles
to overlays. You may try reverting the patch, which for bdb is trivial:
diff -u -r1.37 -r1.38
--- servers/slapd/back-bdb/referral.c 2005/01/01 19:49:53 1.37
+++ servers/slapd/back-bdb/referral.c 2005/01/10 23:38:04 1.38
@@ -103,7 +103,7 @@
if( rs->sr_ref != NULL ) {
/* send referrals */
- rs->sr_err = LDAP_REFERRAL;
+ rc = rs->sr_err = LDAP_REFERRAL;
send_ldap_result( op, rs );
ber_bvarray_free( rs->sr_ref );
rs->sr_ref = NULL;
For back-ldbm the change is diff -u -r1.25 -r1.26, where I did some more
cleanup; maybe this is the cause of the problem? I'll recheck it right
now. In case, note that I already applied the fix to bdb to re22. Note
that I tested the chain overlay (test032) with all the databases with
success; I confirm that back-ldbm doesn't pass test002 on my machines as
well.
Ciao, p.
> Howard Chu wrote:
>
>> back-ldbm in HEAD appears to be rather unstable at the moment, and I'm
>> afraid that my changes in connection management are part of the
>> problem. I notice that if I turn the debug level up high, test002
>> fails. Looking at the slapd.1.log, it appears that Add operations are
>> still in progress when the final ldapsearch is done to retrieve the
>> full database contents. This is really puzzling, it means that the
>> ldapadd command exited successfully already, but the operations it
>> submitted hadn't completed yet. With lower debug levels, the Adds
>> complete quickly enough to finish before the ldapsearch finishes.
>> Otherwise, one to three entries from the tail of the Add are missing
>> from the search result.
>>
>> This also seems to be causing test008 to fail. Also in test008, there
>> is garbage text appearing in the LDAP error text fields. I don't know
>> what it's leftover from...
>>
>> The big problem here seems to be that back-ldbm calls
>> send_ldap_result() to tell the client its status before it actually
>> finishes its internal operations. So it can be in the middle of
>> completing a cache update by the time a new request arrives; this
>> seems to explain what I'm seeing in test002 at least.
>>
> Looking more closely at the logs, there appears to be a bug in with
> ldbm_back_referral and most likely in bdb_referral as well. A referral
> is being sent for every Add operation because the target of the op
> (naturally) doesn't exist. Something is very screwy here.
>
> --
> -- Howard Chu
> Chief Architect, Symas Corp. Director, Highland Sun
> http://www.symas.com http://highlandsun.com/hyc
> Symas: Premier OpenSource Development and Support
>
>
--
Pierangelo Masarati
mailto:pierangelo.masarati@sys-net.it
SysNet - via Dossi,8 27100 Pavia Tel: +390382573859 Fax: +390382476497