]> git.sur5r.net Git - openldap/commitdiff
ITS#8444 Do not clear the pending operation when checkpointing
authorOndřej Kuzník <ondra@mistotebe.net>
Fri, 25 Aug 2017 15:25:23 +0000 (16:25 +0100)
committerHoward Chu <hyc@openldap.org>
Fri, 25 Aug 2017 15:52:13 +0000 (16:52 +0100)
When a checkpoint happens, if we remove the CSN from the pending list,
accesslog won't pass it onto the accesslog DB. But in a delta-mmr
scenario, an accesslog entry without a CSN faces a race where it might
be applied twice - that usually fails and causes a full refresh, other
times it can cause a silent desync - both are undesirable.

servers/slapd/overlays/syncprov.c

index e2f79f03a1fedcc8867edb27e590dbfb93f8e042..2f0f5e8fee4248f5ffba80d3689e95bb7dbd53b8 100644 (file)
@@ -1492,6 +1492,7 @@ syncprov_checkpoint( Operation *op, slap_overinst *on )
        opm.o_bd->bd_info = on->on_info->oi_orig;
        opm.o_managedsait = SLAP_CONTROL_NONCRITICAL;
        opm.o_no_schema_check = 1;
+       opm.o_opid = -1;
        opm.o_bd->be_modify( &opm, &rsm );
 
        if ( rsm.sr_err == LDAP_NO_SUCH_OBJECT &&