Commit 562360fa authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#4613 fix

more ITS#4622 fixes: syncprov: delete contextCSN on checkpoint if ctxcsn is empty
parent e4ac316d
......@@ -1244,9 +1244,14 @@ syncprov_checkpoint( Operation *op, SlapReply *rs, slap_overinst *on )
struct berval bv[2];
slap_callback cb = {0};
mod.sml_values = bv;
bv[1].bv_val = NULL;
bv[0] = si->si_ctxcsn;
/* If ctxcsn is empty, delete it */
if ( BER_BVISEMPTY( &si->si_ctxcsn )) {
mod.sml_values = NULL;
} else {
mod.sml_values = bv;
bv[1].bv_val = NULL;
bv[0] = si->si_ctxcsn;
}
mod.sml_nvalues = NULL;
mod.sml_desc = slap_schema.si_ad_contextCSN;
mod.sml_op = LDAP_MOD_REPLACE;
......@@ -1366,6 +1371,7 @@ syncprov_playlog( Operation *op, SlapReply *rs, sessionlog *sl,
i++;
AC_MEMCPY( cbuf, se->se_csn.bv_val, se->se_csn.bv_len );
delcsn.bv_len = se->se_csn.bv_len;
delcsn.bv_val[delcsn.bv_len] = '\0';
} else {
nmods++;
j = num - nmods;
......@@ -2326,6 +2332,12 @@ syncprov_db_open(
int rc;
void *thrctx = NULL;
if ( !SLAP_LASTMOD( be )) {
Debug( LDAP_DEBUG_ANY,
"syncprov_db_open: invalid config, lastmod must be enabled\n", 0, 0, 0 );
return -1;
}
if ( slapMode & SLAP_TOOL_MODE ) {
return 0;
}
......@@ -2369,15 +2381,16 @@ syncprov_db_open(
ldap_pvt_thread_create( &tid, 0, syncprov_db_otask, op );
ldap_pvt_thread_join( tid, NULL );
}
} else if ( SLAP_SYNC_SHADOW( op->o_bd )) {
/* If we're also a consumer, and we didn't find the context entry,
* then don't generate anything, wait for our provider to send it
* to us.
*/
goto out;
}
if ( BER_BVISEMPTY( &si->si_ctxcsn ) ) {
if ( SLAP_SYNC_SHADOW( op->o_bd )) {
/* If we're also a consumer, and we didn't get a contextCSN,
* then don't generate anything, wait for our provider to send it
* to us.
*/
goto out;
}
si->si_ctxcsn.bv_len = sizeof( si->si_ctxcsnbuf );
slap_get_csn( op, &si->si_ctxcsn, 0 );
}
......
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