[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: slapd crashes updating contextCSN (ITS#2692)
Hi Jong,
The fix does appear to work, both with back-bdb and back-hdb. I'm not sure
whether it solves the original problem filed in this ITS, though; I haven't
had an opportunity to test that yet. (Recall that this was not related to
sync replication per se, just updating the CSN attribute.)
I had been using the following leaky hack to back-bdb/ctxcsn.c to work
around the issue initially filed in this ITS:
Index: back-bdb/ctxcsn.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/back-bdb/ctxcsn.c,v
retrieving revision 1.4
diff -u -r1.4 ctxcsn.c
--- back-bdb/ctxcsn.c 27 Aug 2003 20:16:06 -0000 1.4
+++ back-bdb/ctxcsn.c 30 Aug 2003 06:53:47 -0000
@@ -82,7 +82,24 @@
rs->sr_text = "context csn not present";
return BDB_CSN_ABORT;
} else {
+#ifdef BDB_HIER
+ /* HACK FIX */
+ Attribute **a = &(*ctxcsn_e)->e_attrs;
+
+ while ( *a ) {
+ if ( ad_cmp( (*a)->a_desc, slap_schema.si_ad_contextCSN ) == 0 ) {
+ Attribute *next = (*a)->a_next;
+ *a = next;
+ }
+
+ if ( *a == NULL )
+ break;
+
+ a = &(*a)->a_next;
+ }
+#else
attr_delete( &(*ctxcsn_e)->e_attrs, slap_schema.si_ad_contextCSN );
+#endif
attr_merge_normalize_one( *ctxcsn_e, slap_schema.si_ad_contextCSN,
max_committed_csn, NULL );
ret = bdb_id2entry_update( op->o_bd, tid, *ctxcsn_e );
Syncing does deadlock but that's another back-[bh]db deadlock which
we see when populating the database from LDIF, so you're off the
hook there :-)
BTW, I did see the following error:
Aug 30 16:38:29 ornette slapd[11187]: Entry (cn=Schema,cn=Configuration,dc=off,dc=padl,dc=com): object class 'referral' requires attribute 'ref'
Aug 30 16:38:29 ornette slapd[11187]: null_callback : error code 0x41
Aug 30 16:38:29 ornette slapd[11187]: conn=0 op=0 RESULT tag=105 err=65 text=object class 'referral' requires attribute 'ref'
Aug 30 16:38:29 ornette slapd[11187]: syncrepl_entry : be_add failed (65)
-- Luke