mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Fix prev 2 commits: make sure op is Modify before testing modlist,
don't checkpoint when adding the context entry to a DB
This commit is contained in:
parent
1e651713e2
commit
14d4ca86e1
@ -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
|
||||
@ -1749,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user