Full_Name: Emily Backes
Submission from: (NULL) (220.127.116.11)
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.