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

Re: SyncRepl stops after a few entries [auf Viren ÃberprÃft]





--On Monday, September 12, 2005 3:34 PM +0200 Hans Moser <hans.moser@ofd-sth.niedersachsen.de> wrote:

Hello!

I installed two 2.3.4 server. In the first I added 33 MB of test data
under ou=admindepot,ou=foo,o=bar (slapadd) and added the
syncprovider-overlay conf in slapd.conf.
In the second server I just add the initial ou=admindepot,ou=foo,o=bar
entries und configured syncconsumer in slapd.conf.
SyncRep evertime ends after the same 6 -partially with not all the
attributes- entries of a few thousand.
I cannot see any specific error.
Is this one of the in latter releases fixed SyncRepl issues?

[When I fill the first server by ldapadd, while SyncRepl is currently
established, the entries get replicated.]

You need to update to OpenLDAP 2.3.7, and then apply 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 );