Full_Name: Emily Backes Version: 2.4 OS: any URL: Submission from: (NULL) (98.155.30.248)
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:... ...etc...
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 line.
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.