[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#7200) serverID 0 after serverID should fail loudly

Full_Name: Emily Backes
Version: 2.4
OS: any
Submission from: (NULL) (

This is an enhancement request, based on discussions and common failing
use-cases we've encountered.

Very often, people configure:

serverID 1 ldap:...
serverID 2 ldap:...

And for various reasons none of the ldap URIs match the local server and they
end up in a faux-mmr where every server believes itself to be zero, resulting in
great consternation when replication then fails awkwardly farther down the

It's only meaningful to set serverID on "master" servers-- those accepting
changes, so it seems reasonable to require that one of the serverIDs matches. 
This is probably easiest to enforce by requiring:

* If serverID is zero, mirrormode must be off.  Turning mirrormode on should
require a non-zero serverID beforehand.

It would be nice to test this at serverID setting time, but that requires state
checking beyond what is easily provided to the config table, I think.  Namely,
if any serverIDs are specified, one of them must match and set to a non-zero
value; any null serverID after all serverID num/uri pairs are considered should
cause the config change or slapd.conf to be rejected.

It's also possible that the is-this-a-local-change checks in syncprov.c may want
to handle serverID 0 CSNs specially; they must exist only as part of a shared
change-set that existed before the current mmr topology.  New CSNs appearing
with serverID 0 are evidence of unrecoverable misconfiguration.