Commit 6e70edbc authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

More for ITS#5988

parent 427d7661
......@@ -1644,7 +1644,7 @@ syncprov_op_response( Operation *op, SlapReply *rs )
maxcsn.bv_len = sizeof(cbuf);
ldap_pvt_thread_rdwr_wlock( &si->si_csn_rwlock );
if ( op->o_dont_replicate &&
if ( op->o_dont_replicate && op->o_tag == LDAP_REQ_MODIFY &&
op->orm_modlist->sml_op == LDAP_MOD_REPLACE &&
op->orm_modlist->sml_desc == slap_schema.si_ad_contextCSN ) {
/* Catch contextCSN updates from syncrepl. We have to look at
......@@ -1733,10 +1733,12 @@ syncprov_op_response( Operation *op, SlapReply *rs )
sizeof(int));
si->si_sids[i] = sid;
}
#if 0
} else if ( !foundit ) {
/* internal ops that aren't meant to be replicated */
ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );
return SLAP_CB_CONTINUE;
#endif
}
/* Don't do any processing for consumer contextCSN updates */
......@@ -1747,17 +1749,23 @@ syncprov_op_response( Operation *op, SlapReply *rs )
si->si_numops++;
if ( si->si_chkops || si->si_chktime ) {
if ( si->si_chkops && si->si_numops >= si->si_chkops ) {
do_check = 1;
si->si_numops = 0;
}
if ( si->si_chktime &&
(op->o_time - si->si_chklast >= si->si_chktime )) {
if ( si->si_chklast ) {
/* Never checkpoint adding the context entry,
* it will deadlock
*/
if ( op->o_tag != LDAP_REQ_ADD ||
!dn_match( &op->o_req_ndn, &op->o_bd->be_nsuffix[0] )) {
if ( si->si_chkops && si->si_numops >= si->si_chkops ) {
do_check = 1;
si->si_chklast = op->o_time;
} else {
si->si_chklast = 1;
si->si_numops = 0;
}
if ( si->si_chktime &&
(op->o_time - si->si_chklast >= si->si_chktime )) {
if ( si->si_chklast ) {
do_check = 1;
si->si_chklast = op->o_time;
} else {
si->si_chklast = 1;
}
}
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment