[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
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.