[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: syncrepl w/ 2.3 and bdb 4.3 working great





--On Monday, September 12, 2005 10:00 AM -0400 Dusty Doris <openldap@mail.doris.cc> wrote:


I was wondering if BerkeleyDB 4.3.28 was suitable for production use with OL 2.3.7.

There were some continuing issues with syncprov in 2.3.7 that are now fixed in HEAD.

--Quanah


Hmm, I haven't been seeing issues, but I'm interested in what those are. I was planning on moving 2.3.7 to production in the next week or two.

I'll check the ITS system and look reports on syncprov issues.  Perhaps
I'm not generating the amount of adds/modifies I need to run into those
problems.

If you happen to know any ITS numbers I should check out, let me know.

ITS #3989. There were issues with the consumers taking on the identity of the writer. If the writer had fewer permissions than were necessary by the reader, this caused a number of issues (plus the fact that connections were taking on other identities is problematic in itself). Again, I'd get syncprov.c from HEAD where this is all fixed (it compiles cleanly into 2.3.7), or you can use the attached patch.


--Quanah


-- Quanah Gibson-Mount Principal Software Developer ITSS/Shared Services Stanford University GnuPG Public Key: http://www.stanford.edu/~quanah/pgp.html

"These censorship operations against schools and libraries are stronger
than ever in the present religio-political climate. They often focus on
fantasy and sf books, which foster that deadly enemy to bigotry and blind
faith, the imagination." -- Ursula K. Le Guin
--- openldap-2.3.7/servers/slapd/overlays/syncprov.c.orig	2005-08-29 11:26:11.000000000 -0700+++ openldap-2.3.7/servers/slapd/overlays/syncprov.c	2005-09-09 09:59:20.263806000 -0700@@ -408,26 +408,29 @@ 	SlapReply frs = { REP_RESULT }; 	int rc; -	fop = *op;+	/* Use basic parameters from syncrepl search, but use+	 * current op's threadctx / tmpmemctx+	 */+	fop = *fc->fss->s_op;++	fop.o_hdr = op->o_hdr;+	fop.o_bd = op->o_bd;+	fop.o_time = op->o_time;+	fop.o_tincr = op->o_tincr;  	cb.sc_response = findbase_cb; 	cb.sc_private = fc; -	fop.o_sync_mode &= SLAP_CONTROL_MASK;	/* turn off sync mode */+	fop.o_sync_mode = 0;	/* turn off sync mode */ 	fop.o_managedsait = SLAP_CONTROL_CRITICAL; 	fop.o_callback = &cb; 	fop.o_tag = LDAP_REQ_SEARCH; 	fop.ors_scope = LDAP_SCOPE_BASE;-	fop.ors_deref = fc->fss->s_op->ors_deref; 	fop.ors_limit = NULL; 	fop.ors_slimit = 1; 	fop.ors_tlimit = SLAP_NO_LIMIT; 	fop.ors_attrs = slap_anlist_no_attrs; 	fop.ors_attrsonly = 1;-	fop.ors_filter = fc->fss->s_op->ors_filter;-	fop.ors_filterstr = fc->fss->s_op->ors_filterstr;--	fop.o_req_ndn = fc->fss->s_op->o_req_ndn;  	fop.o_bd->bd_info = on->on_info->oi_orig; 	rc = fop.o_bd->be_search( &fop, &frs );@@ -780,6 +783,7 @@ 	sop.o_bd = op->o_bd; 	sop.o_controls = op->o_controls; 	sop.o_private = op->o_private;+	sop.o_callback = NULL;  	/* If queueing is allowed */ 	if ( queue ) {@@ -1046,6 +1050,7 @@ 				"search base has changed" ); 			sprev->s_next = snext; 			syncprov_drop_psearch( ss, 1 );+			ss = sprev; 			continue; 		} @@ -1693,6 +1698,8 @@ 		g2->ga_next = op2->o_groups; 		op2->o_groups = g2; 	}+	/* Don't allow any further group caching */+	op2->o_do_not_cache = 1;  	/* Add op2 to conn so abandon will find us */ 	ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );