ITS#7077 preserve mirrorMode setting when deleting syncrepl

This commit is contained in:
Howard Chu 2011-11-04 15:52:23 -07:00
parent 191e533474
commit 31b5c396d3
2 changed files with 17 additions and 6 deletions

View file

@ -1185,7 +1185,7 @@ config_generic(ConfigArgs *c) {
break;
case CFG_MIRRORMODE:
if ( SLAP_SHADOW(c->be))
c->value_int = (SLAP_SINGLE_SHADOW(c->be) == 0);
c->value_int = (SLAP_MULTIMASTER(c->be) != 0);
else
rc = 1;
break;
@ -1290,7 +1290,6 @@ config_generic(ConfigArgs *c) {
case CFG_AZPOLICY:
case CFG_DEPTH:
case CFG_LASTMOD:
case CFG_MIRRORMODE:
case CFG_MONITORING:
case CFG_SASLSECP:
case CFG_SSTR_IF_MAX:
@ -1307,6 +1306,12 @@ config_generic(ConfigArgs *c) {
snprintf(c->log, sizeof( c->log ), "change requires slapd restart");
break;
case CFG_MIRRORMODE:
SLAP_DBFLAGS(c->be) &= ~SLAP_DBFLAG_MULTI_SHADOW;
if(SLAP_SHADOW(c->be))
SLAP_DBFLAGS(c->be) |= SLAP_DBFLAG_SINGLE_SHADOW;
break;
#if defined(HAVE_CYRUS_SASL) && defined(SLAP_AUXPROP_DONTUSECOPY)
case CFG_AZDUC:
if ( c->valx < 0 ) {
@ -2079,10 +2084,13 @@ sortval_reject:
c->log, c->cr_msg, 0 );
return(1);
}
if(c->value_int)
if(c->value_int) {
SLAP_DBFLAGS(c->be) &= ~SLAP_DBFLAG_SINGLE_SHADOW;
else
SLAP_DBFLAGS(c->be) |= SLAP_DBFLAG_MULTI_SHADOW;
} else {
SLAP_DBFLAGS(c->be) |= SLAP_DBFLAG_SINGLE_SHADOW;
SLAP_DBFLAGS(c->be) &= ~SLAP_DBFLAG_MULTI_SHADOW;
}
break;
case CFG_MONITORING:
@ -3794,7 +3802,9 @@ config_shadow( ConfigArgs *c, slap_mask_t flag )
}
} else {
SLAP_DBFLAGS(c->be) |= (SLAP_DBFLAG_SHADOW | SLAP_DBFLAG_SINGLE_SHADOW | flag);
SLAP_DBFLAGS(c->be) |= (SLAP_DBFLAG_SHADOW | flag);
if ( !SLAP_MULTIMASTER( c->be ))
SLAP_DBFLAGS(c->be) |= SLAP_DBFLAG_SINGLE_SHADOW;
}
return 0;

View file

@ -1851,6 +1851,7 @@ struct BackendDB {
#define SLAP_DBFLAG_CLEAN 0x10000U /* was cleanly shutdown */
#define SLAP_DBFLAG_ACL_ADD 0x20000U /* check attr ACLs on adds */
#define SLAP_DBFLAG_SYNC_SUBENTRY 0x40000U /* use subentry for context */
#define SLAP_DBFLAG_MULTI_SHADOW 0x80000U /* uses mirrorMode/multi-master */
slap_mask_t be_flags;
#define SLAP_DBFLAGS(be) ((be)->be_flags)
#define SLAP_NOLASTMOD(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NOLASTMOD)
@ -1874,7 +1875,7 @@ struct BackendDB {
#define SLAP_SYNC_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SYNC_SHADOW)
#define SLAP_SLURP_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SLURP_SHADOW)
#define SLAP_SINGLE_SHADOW(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SINGLE_SHADOW)
#define SLAP_MULTIMASTER(be) (!SLAP_SINGLE_SHADOW(be))
#define SLAP_MULTIMASTER(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_MULTI_SHADOW)
#define SLAP_DBCLEAN(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_CLEAN)
#define SLAP_DBACL_ADD(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_ACL_ADD)
#define SLAP_SYNC_SUBENTRY(be) (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SYNC_SUBENTRY)